Объединить несколько документов в представлении couchdb
В couchdb мне нужно представить некоторые данные в следующем формате, внешний контейнер, который ссылается на другие документы внутри массива.
Я хочу хранить эти документы отдельно, так как мне нужно разрешать конфликты с ними индивидуально.
{
"_id" : "1"'
"type" : "container",
"items" : [ "1", "2", "3"]
}
{
"_id" : "2",
"value": "a"
"type" : "item"
}
{
"_id" : "3",
"value": "b"
"type" : "item"
}
{
"_id" : "4",
"value": "c"
"type" : "item"
}
Я хочу вывести представление данных в следующем формате.
{
"_id" : "1"'
"type" : "container",
"items" : [
{
"_id" : "2",
"value": "a"
"type" : "item"
},
{
"_id" : "3",
"value": "b"
"type" : "item"
},
{
"_id" : "4",
"value": "c"
"type" : "item"
}
]
}
Какой лучший способ подойти к этому?
1 ответ
Решение
Вы можете добиться этого, используя couchdb связанные документы
вот как будет выглядеть вид
function(doc){
if(doc.items)
doc.items.forEach(function(item){
emit(doc._id,{_id:item});
})
}
Теперь вы можете запросить вид с include_docs=true
параметр, и вы должны иметь желаемый результат.