Объединить несколько документов в представлении 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 параметр, и вы должны иметь желаемый результат.

Другие вопросы по тегам