【发布时间】:2015-11-28 23:49:11
【问题描述】:
总的来说,我对 couchdb 和 map/reduce 还是很陌生。我有以下看法:
{
"_id": "_design/keys",
"views": {
"keys": {
"map": "function(doc) { for (var thing in doc) { if (doc.created_at != null) { emit([thing, doc.created_at],1); } } }",
"reduce": "function(key,values) { return sum(values); }"
}
}
}
这可以很好地给我数据库中具有适当 group_level 的所有文档键的计数的总和:
.../_design/keys/_view/keys?group_level=1
{"rows":[
{"key":["_id"],"value":2},
{"key":["_rev"],"value":2},
{"key":["created_at"],"value":2},
{"key":["testing"],"value":2}
]}
现在我要做的是按日期减少这些映射的文档,这是一个 IOS8601 字符串:
{"rows":[
{"key":["_id","2015-11-25T21:13:58Z"],"value":1},
{"key":["_id","2015-11-25T21:14:39Z"],"value":1},
{"key":["_rev","2015-11-25T21:13:58Z"],"value":1},
{"key":["_rev","2015-11-25T21:14:39Z"],"value":1},
{"key":["created_at","2015-11-25T21:13:58Z"],"value":1},
{"key":["created_at","2015-11-25T21:14:39Z"],"value":1},
{"key":["testing","2015-11-25T21:13:58Z"],"value":1},
{"key":["testing","2015-11-25T21:14:39Z"],"value":1}
]}
但我仍然希望按密钥的第一部分分组的结果。也就是说,我想指定2015-11-25T21:13:57Z的开始时间和2015-11-25T21:13:59Z的结束时间,并以2015-11-25T21:13:58Z的时间戳取回所有内容,如下所示:
{"rows":[
{"key":["_id"],"value":1},
{"key":["_rev"],"value":1},
{"key":["created_at"],"value":1},
{"key":["testing"],"value":1}
]}
我该怎么做?
【问题讨论】:
标签: couchdb