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视图的最佳方式