CouchDB链接多个文档

时间:2014-06-05 09:49:12

标签: mapreduce couchdb

是否可以在一个视图中链接多个文档。

例如:

{
  "_id" : "0b86008d8490abf0b7e4f15f0c6a463b",
  "name" : "copenhagen"}
{
  "_id" : "8986008d8490abf0b7e4f15f0c6a333b",
  "player" : "Mark"
}
{
  "_id" : "4b86008d8490abf0b7e4f15f0c6a463c",
  "location" : { "uuid" : "0b86008d8490abf0b7e4f15f0c6a463b"},
  "player" : { "uuid" : "8986008d8490abf0b7e4f15f0c6a333b"},
  "session" : "9876"
}

我希望视图包含位置文档以及播放器文档。

查看:

  "fetchByLocationAndPlayer": {
       "map": "function(doc) {    if (doc.session) {  emit(doc.session, { _id : **doc.location.uuid** });     } }"
   }

在查询中我使用includedocs = true。

如何在一个文档中发出与多个键对应的多个文档?

1 个答案:

答案 0 :(得分:5)

是的,这是可能的。只需使用两个发射而不是一个

emit(doc.session, {_id:doc.location.uuid});
emit(doc.session,{_id:doc.player.uuid});

Couch db wiki列出了另一种方法,即迭代数组并逐个发布链接文档。