假设我们有两种类型的文件。一个存储元数据,许多其他 - 具有复杂的处理,取决于第一个文档的状态。我们不希望在第二种类型的所有文档中复制状态,因为它们很多。如何开发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);
}
}
}
答案 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