couchdb如何在map函数中通过id获取doc

时间:2011-08-24 18:07:45

标签: map couchdb

假设我们有两种类型的文件。一个存储元数据,许多其他 - 具有复杂的处理,取决于第一个文档的状态。我们不希望在第二种类型的所有文档中复制状态,因为它们很多。如何开发MAP函数以从第一类文档接收数据。

{ "_id":"123",
   "public":true 
}
{
"_id":"321",
"owner_id":"123"
"data":"..."
}
function(doc) {
   if (doc._id=="321"){
        // How do get another document like in python, for example
        var doc2 = db[doc.owner_id];
        if (doc2.public) {
           emit(doc._id, null);
       }
   }
}

1 个答案:

答案 0 :(得分:4)

你可以这样做;

function(doc) {
  emit(doc._id, {"_id":doc.owner_id});
}

然后当你这样做?key = 321& include_docs = true时,所包含的doc将是id为doc.owner_id而不是321的文件。

更多信息: http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Linked_documents