我的帖子包含用户名(帖子作者)和时间戳(上传时间)等字段。我正在努力创建一个视图,当查询时,它按时间戳的降序抓取特定用户的帖子。
map: function(doc) {
if (doc.type == 'post'){
emit(doc.username, [doc._id, doc.timestamp]);
};
},
Run Code Online (Sandbox Code Playgroud)
我可以查询由特定用户创作的文档,但如何仅在时间戳字段上应用降序 = true?
对于 CouchDB 视图,只有键可以确定索引的排序顺序。该值根本不考虑排序/分组。
因此,如果您想要一个视图按创建顺序(升序或降序)输出用户的帖子,您将发出一个数组作为一种“复合键”。我强烈建议通读CouchDB 文档中的视图指南。
对于您的示例,我将制作一个这样的地图功能:
function (doc) {
if (doc.type === 'post') {
emit([ doc.username, doc.timestamp ]);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下查询获取特定用户的帖子:
?start_key=["username"]&end_key=["username","\ufff0"]
Run Code Online (Sandbox Code Playgroud)
它将找到按时间戳升序排列的给定“用户名”的帖子。要颠倒顺序,请改用以下查询:
?start_key=["username","\ufff0"]&end_key=["username"]&descending=true
Run Code Online (Sandbox Code Playgroud)
注意,对于价值观start_key和end_key已交换,并descending=true已被添加。
正如前面提到的,通读他们的文档,因为这是一个很好的方式来了解使用 CouchDB 视图的最佳方式。
| 归档时间: |
|
| 查看次数: |
3850 次 |
| 最近记录: |