CouchDb按时间戳降序排序用户发布的帖子

CouchDb按时间戳降序排序用户发布的帖子,couchdb,Couchdb,我的帖子有用户名(帖子作者)和时间戳(上传时间)等字段。我正在努力创建一个视图,当在上面查询时,该视图会按时间戳的降序抓取特定用户的帖子 map: function(doc) { if (doc.type == 'post'){ emit(doc.username, [doc._id, doc.timestamp]); }; }, 我可以查询特定用户编写的文档,但如何仅在时间戳字段上应用descending=true?对于CouchDB视图,只有键可以确定索引的

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

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

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

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

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

对于您的示例,我将创建如下映射函数:

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_key
end_key
的值已交换,并且已添加了
descending=true


如前所述,通读他们的文档,因为这是一种很好的方法,可以让您了解使用CouchDB视图的最佳方式。

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

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

对于您的示例,我将创建如下映射函数:

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_key
end_key
的值已交换,并且已添加了
descending=true

如前所述,通读他们的文档,因为这是一种很好的方法,可以让您了解使用CouchDB视图的最佳方式