CouchDb按时间戳降序对用户的帖子进行排序



我有像用户名(文章作者)和时间戳(上传时间)字段的文章。我正在努力创建一个视图,当查询时,按时间戳降序抓取特定用户的帖子。

map: function(doc) {
    if (doc.type == 'post'){
        emit(doc.username, [doc._id, doc.timestamp]);
    };
},

我可以查询由特定用户撰写的文档,但如何仅在时间戳字段上应用降序= true ?

对于CouchDB视图,只有键可以决定索引的排序顺序。该值根本不考虑排序/分组。

因此,如果您希望有一个视图,该视图按照创建的顺序(升序或降序)输出用户的帖子,您将发出一个数组作为一种"复合键"。我强烈建议阅读CouchDB文档中的视图指南。

对于您的示例,我将创建一个这样的map函数:

function (doc) {
  if (doc.type === 'post') {
    emit([ doc.username, doc.timestamp ]);
  }
}

然后,您可以使用如下查询获取特定用户的帖子:

?start_key=["username"]&end_key=["username","ufff0"]

查找给定"用户名"的帖子,按时间戳升序排序。要反转顺序,请使用以下查询:

?start_key=["username","ufff0"]&end_key=["username"]&descending=true

注意,start_keyend_key的值已经交换,descending=true的值已经增加。

如前所述,请通读它们的文档,因为这是了解使用CouchDB视图的最佳方法的好方法。

最新更新