我有像用户名(文章作者)和时间戳(上传时间)字段的文章。我正在努力创建一个视图,当查询时,按时间戳降序抓取特定用户的帖子。
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_key
和end_key
的值已经交换,descending=true
的值已经增加。
如前所述,请通读它们的文档,因为这是了解使用CouchDB视图的最佳方法的好方法。