0

我有一个包含组字段的用户文档。该字段是一组组 ID。我想编写一个返回(groupid 作为键)->(用户文档数组作为 val)的视图。这个映射操作似乎是一个好的开始。

function(doc)
{
  var type = doc.type;
  var groups = doc.groups;
  if(type == "user" && groups.length > 0)
  {
    for(var i = 0; i < groups.length; i++)
    {
      emit(groups[i], doc);
    }
  }
}

但是我的减少尝试显然有一些非常错误的地方:

function(key, values, rereduce)
{
  var set = [];
  var seen = [];
  for(var i = 0; i < values.length; i++)
  {
    var _id = values[i]._id;
    if(seen.indexOf(_id) == -1)
    {
      seen.push(_id);
      set.push(values[i]);
    }
  }
  return set;
}

我正在运行 CouchDB 0.10dev。任何帮助表示赞赏。

4

1 回答 1

1

在检查了 CouchDB IRC 之后,答案是你根本不需要 reduce。只需提供一个 key=groupId,如下所示:

http://localhost:5984/somedb/_design/bygroup/_view/all?key=2

于 2009-07-04T00:30:24.973 回答