我的文件中有文件:
{ type: "post", author: "1", subject: "s1", timestamp: 11}
{ type: "post", author: "1", subject: "s2", timestamp: 12}
{ type: "post", author: "2", subject: "s3", timestamp: 9 }
{ type: "post", author: "3", subject: "s4", timestamp: 10}
{ type: "post", author: "4", subject: "s5", timestamp: 14}
{ type: "post", author: "5", subject: "s6", timestamp: 11}
我有意见:
function(doc, meta) {
if(doc.t === 'post') {
emit([doc.timestamp, doc.author]);
}
}
它给了我:
[11, "1"]
[12, "1"]
[9, "2"]
[10, "3"]
[14, "4"]
[11, "5"]
我想选择按时间戳排序的特定用户[" 2"," 3"," 5"]的帖子。 我的意思是"获得一些用户的最新帖子"。 有可能吗?
答案 0 :(得分:0)
我会重新整理您的数据: 假设您的作者是唯一的,请为每位作者保留一份文档,并将其帖子保存为该文档中的列表。
doc name: "author:1"
doc:
{ 'posts':[{'subject':'s1','body':'this is body1'},
{'subject':'s2','body':'this is body2'}] }
诀窍是维护帖子列表中的顺序。如果您只想要最新的帖子,您的视图可以提取帖子列表中的最后一项。
答案 1 :(得分:0)
查看关键数组处理其(自然)顺序。 如果你想"具体" user:比如说,具有时间戳的完全匹配的用户,视图函数看起来像:
function(doc, meta) {
if(doc.type === 'post') {
emit([doc.author, doc.timestamp], null);
}
}
这个确切的作者1,时间戳范围1~100
startkey:[1,1]
结束键:[1,100]
<强>结果:强>
[1,11]
[1,12]
但是,如果你想要两个带范围的属性......
作者:1~10
时间戳:1~100
随后排出&#39; ARRAY&#39;订购;超出范围查询的2个属性将无法按所需方式返回 如果你想要另一种带有多个&#34;范围的排序结果&#34;属性,你应该包含视图功能。