Pregunta

Tengo un documento de usuario que tiene un campo de grupo. Este campo es una matriz de ID de grupo. Me gustaría escribir una vista que devuelve (GROUPID como llave) -> (serie de documentos de usuario como val). Esta operación de asignación parece ser un buen comienzo.

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

Pero obviamente hay algo muy mal con mi intento de reducir:

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

Estoy corriendo CouchDB 0.10dev. Cualquier ayuda apreciada.

¿Fue útil?

Solución

La respuesta a esta después de comprobar en el IRC CouchDB es que no es necesario reducir para esto en absoluto. Simplemente proporcione una clave = groupId, algo así como lo siguiente:

http: // localhost: 5984 / somedb / _Diseño / bygroup / _view / todos? key = 2

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top