Pergunta

Eu tenho um documento do usuário que tem um campo de grupo. Este campo é uma matriz de IDs de grupo. Eu gostaria de escrever uma visão que retorna (groupid como chave) -> (array de docs usuário como val). Esta operação de mapeamento parece ser um bom começo.

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

Mas há obviamente algo muito errado com a minha tentativa de reduzir:

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

Estou correndo CouchDB 0.10dev. Qualquer ajuda apreciado.

Foi útil?

Solução

A resposta a esta após a verificação sobre o CouchDB IRC é que você não precisa reduzir para tudo isso. Basta fornecer uma chave = groupId, algo como o seguinte:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top