couchdb map函数和reduce函数
Posted
技术标签:
【中文标题】couchdb map函数和reduce函数【英文标题】:couchdb map function and reduce function 【发布时间】:2013-07-27 10:36:22 【问题描述】:我正在尝试为以下情况计算映射函数和归约函数:
文件:
"_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 分别以“_A”、“_B”...“_Z”结尾的所有文档中每个键(key1、key2...keyn)的总和。
在这种情况下,期望 sumA: "key1":12, "key2":13。和 sumB: "key1":21, "key2":20;
我一直在研究地图功能(doc),在我看来,它只处理一个指定为“doc”值的文档。
有没有达到预期的结果?反正有没有像SQL join这样的???
【问题讨论】:
我的回答对您有帮助吗?还是您需要更多信息,即我没有提供足够的详细信息? 【参考方案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]);
对于reduce,您希望使用内置函数_sum
来提高性能。
然后您可以使用 group=true
作为 URL 参数查询这些总和,可能通过使用 startkey
和 endkey
(例如 ["A"]
和 ["A", ]
)将值限制为仅具有后缀 A
的值。
在这种情况下,结果将是:
"rows":[
"key":["A","1"],"value":12,
"key":["A","2"],"value":13,
"key":["B","1"],"value":21,
"key":["B","2"],"value":20
]
【讨论】:
它有帮助,现在我有另一个问题是这个问题的结果:请看看***.com/questions/18079917/…以上是关于couchdb map函数和reduce函数的主要内容,如果未能解决你的问题,请参考以下文章
CouchDB:使用 Reduce 时如何在 Map 函数中使用数组键?