Frage

Ich habe ein Benutzerdokument, das eine Gruppe Feld hat. Dieses Feld ist ein Feld von Gruppen-IDs. Ich möchte einen Blick schreiben, die (groupid als Schlüssel) gibt -> (Array von Benutzer docs als val). Diese Abbildungsoperation scheint ein guter Anfang.

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

Aber es gibt offensichtlich etwas sehr falsch mit meinem Versuch einer Verringerung:

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

Ich bin mit CouchDB 0.10dev. Jede Hilfe sehr geschätzt.

War es hilfreich?

Lösung

Die Antwort auf diese nach dem Einschalten der CouchDB IRC Überprüfung ist, dass Sie nicht für diese überhaupt reduzieren müssen. Geben Sie einfach einen Schlüssel = groupId, etwa wie folgt:

http: // localhost: 5984 / somedb / _Design / bygroup / _view / alle? key = 2

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top