CouchDB – основной вопрос для группировки
Вопрос
У меня есть пользовательский документ, в котором есть поле группы.Это поле представляет собой массив идентификаторов групп.Я хотел бы написать представление, которое возвращает (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);
}
}
}
Но явно что-то не так с моей попыткой сокращения:
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.Любая помощь приветствуется.
Решение
Ответ на этот вопрос после проверки IRC CouchDB заключается в том, что вам вообще не нужно использовать для этого сокращение.Просто укажите key=groupId, примерно так:
http://localhost:5984/somedb/_design/bygroup/_view/all?key=2
Не связан с StackOverflow