假设我的 CouchDB 数据库中有这样的博客条目:
{"name":"Mary", "postdate":"20110412", "subject":"this", "message":"blah"}
{"name":"Joe", "postdate":"20110411", "subject":"that", "message":"yadda"}
{"name":"Mary", "postdate":"20110411", "subject":"and this", "message":"blah-blah"}
{"name":"Joe", "postdate":"20110410", "subject":"and other thing", "message":"yada-yada"}
{"name":"Jane", "postdate":"20110409", "subject":"严肃的东西", "message":"不是真的"}
获取所有帖子的列表非常容易。但是如何从所有用户那里获得最新帖子的列表?
像那样:
{"name":"Mary", "postdate":"20110412", "subject":"this", "message":"blah"}
{"name":"Joe", "postdate":"20110411", "subject":"that", "message":"yadda"}
{"name":"Jane", "postdate":"20110409", "subject":"严肃的东西", "message":"不是真的"}
试试这个地图功能:
function(doc) {
if (doc.postdate && doc.name) {
emit([doc.name, doc.postdate], 1);
}
}
Run Code Online (Sandbox Code Playgroud)
以及以下减少功能:
function(keys, values, rereduce) {
var max = 0,
ks = rereduce ? values : keys;
for (var i = 1, l = ks.length; i < l; ++i) {
if (ks[max][0][1] < ks[i][0][1]) max = i;
}
return ks[max];
}
Run Code Online (Sandbox Code Playgroud)
并使用group_level=1. 它给你_id的职位,那么你可以检索它们都与一个查询的keys参数或使用POST。
我不确定这是否是最好的方法,但它似乎有效。
更新:修复了地图以正确处理 rereduce。
| 归档时间: |
|
| 查看次数: |
2358 次 |
| 最近记录: |