Mapreduce 在couchbase中编写reduce函数
这是我在couchbase的第一次尝试。我的json文档如下所示:Mapreduce 在couchbase中编写reduce函数,mapreduce,couchbase,Mapreduce,Couchbase,这是我在couchbase的第一次尝试。我的json文档如下所示: { "member_id": "12345", "devices": [ { "device_id": "1", "hashes": [ "h1", "h2", "h3", "h4" ] },
{
"member_id": "12345",
"devices": [
{
"device_id": "1",
"hashes": [
"h1",
"h2",
"h3",
"h4"
]
},
{
"device_id": "2",
"hashes": [
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"h7"
]
}
]
}
我想创建一个视图,告诉我给定散列的所有成员ID
大概是这样的:
h1["12345","233","2323"] //233,2323 are other member id
h2["12345"]
成员id
应在集合中出现一次
我写了一个映射函数
function (doc, meta) {
for(i=0;i< doc.devices.length;i++)
{
for(j=0;j< doc.devices[i].hashes.length;j++) {
emit(doc.devices[i].hashes[j],null)
}
}
}
但我无法从这里继续前进。如何更改映射函数以减少结果?映射函数。大部分是您的,但作为值发出
meta.id
function(doc, meta) {
for(i=0; i< doc.devices.length; i++) {
for(j=0; j< doc.devices[i].hashes.length; j++) {
emit(doc.devices[i].hashes[j], meta.id)
}
}
}
function(doc, meta) {
for(i=0; i< doc.devices.length; i++) {
for(j=0; j< doc.devices[i].hashes.length; j++) {
emit(doc.devices[i].hashes[j], meta.id)
}
}
}
function(keys, values, rereduce) {
return values.filter(function (e, i, arr) {
return arr.lastIndexOf(e) === i;
});
}