我正在尝试制定地图功能并减少以下情况的功能:
文件:
{
"_id" : "1_A",
"key1": 10,
"key2": 10
}
{
"_id" : "2_A",
"key1": 2,
"key2": 3
}
{
"_id" : "1_B",
"key1": 20,
"key2": 20
}
{
"_id" : "2_B",
"key1": 1,
"key2": 0
}
等
期望:所有id中的每个键(key1,key2 ... keyn)的总和单独以“_A”,“_ B”......“_ Z”结尾。
在这种情况下,期望有sumA:“key1”:12,“key2”:13。和sumB:“key1”:21,“key2”:20;
我一直在研究地图功能(doc),在我看来,它只是处理一个指定为“doc”值的文档。
无论如何都能达到预期的效果吗?是不是像SQL join ???
答案 0 :(得分:1)
["A", 1]
,其中key
的值为id
,其中A
以function (doc) {
for (var k in doc) {
if (k !== '_id' && k !== 'rev') {
emit([doc._id.substr(doc._id.length - 1), k.substr(k.length - 1)],
doc[k]);
}
}
}
结尾。
地图示例:
_sum
对于reduce,您希望使用内置函数group=true
来提高性能。
然后,您可以使用A
作为网址参数查询这些总和,可能会使用startkey
和endkey
(例如{{}将值限制为仅包含后缀["A"]
的值1}}和["A", {}]
)。
在这种情况下,结果将是:
{"rows":[
{"key":["A","1"],"value":12},
{"key":["A","2"],"value":13},
{"key":["B","1"],"value":21},
{"key":["B","2"],"value":20}
]}