couchdb如何在map函数中按id获取文档

couchdb如何在map函数中按id获取文档,map,couchdb,Map,Couchdb,假设我们有两种类型的文档。一种是存储元数据,另一种是根据第一个文档的状态进行复杂的处理。我们不想在第二种类型的所有文档中重复状态,因为它们很多。如何开发MAP函数来接收来自第一类文档的数据 { "_id":"123", "public":true } { "_id":"321", "owner_id":"123" "data":"..." } function(doc) { if (doc._id=="321"){ // How do get another doc

假设我们有两种类型的文档。一种是存储元数据,另一种是根据第一个文档的状态进行复杂的处理。我们不想在第二种类型的所有文档中重复状态,因为它们很多。如何开发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);
       }
   }
}
你可以这样做

function(doc) {
  emit(doc._id, {"_id":doc.owner_id});
}
那么当您这样做时?key=321&include_docs=true,包含的文档将是id为doc.owner_id的文档,而不是321

详情如下:

它如何帮助使用依赖于链接文档中的数据而不是其id的映射功能?这在CouchDB中无法实现。映射函数一次只能访问一个文档。如果每个索引记录都需要知道索引所涉及的其他文档,以便在相关文档更改时更新索引,则索引一致性将非常困难。虽然这是可取的,但其成本却高得让人望而却步。