Question

Je possède un document d'utilisateur qui a un champ de groupe. Ce champ est un tableau de ids de groupe. Je voudrais écrire une vue qui retourne (GROUPID comme la clé) -> (tableau de documents utilisateur comme val). Cette opération de cartographie semble être un bon début.

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

Mais il y a évidemment quelque chose de très mal avec ma tentative de réduire:

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

Je suis en cours d'exécution CouchDB 0.10dev. Toute aide appréciée.

Était-ce utile?

La solution

La réponse à cette après vérification sur le IRC CouchDB est que vous n'avez pas besoin de réduire pour cela du tout. Il suffit de fournir une clé = groupId, quelque chose comme ce qui suit:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top