Mapreduce 在couchbase中编写reduce函数

Mapreduce 在couchbase中编写reduce函数,mapreduce,couchbase,Mapreduce,Couchbase,这是我在couchbase的第一次尝试。我的json文档如下所示: { "member_id": "12345", "devices": [ { "device_id": "1", "hashes": [ "h1", "h2", "h3", "h4" ] },

这是我在couchbase的第一次尝试。我的json文档如下所示:

{
   "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;
  });
}