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

しかし、reduce の試みには明らかに非常に問題があります。

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 に答える