在' sql-esque'中加入数据可以在MapReduce中使用,如these Standford course notes和this MSc thesis以及plagiarized copy of that thesis http://ijniet.org所提到的那样:p。
我有3个实体:
A
B
C
A
和B
可以在列ab
上加入,BC
可以在列bc
上加入。我认为我可以通过级联MapReduce任务实现这一点。但我不能以任何方式在CouchDB中做到这一点,无论是使用Map函数,减少函数,列表函数(使用MapReduce视图),还是这些的组合...
在CouchDB中,您可以使用相同的连接键输出不同实体的文档。但据我所知,没有可能的map函数允许通过相同的键或键范围对多个实体进行分组?
这适用于JOINS,其中每个连接的外键列都不同。
答案 0 :(得分:1)
你不能在CouchDB中进行级联连接。
您可以做的唯一连接是一对多连接。
它包含一个视图,它将链接的文档作为值发布:
function(doc){
emit([doc._id,0]);
emit([doc.ab,1],{_id:doc.ab});
}
然后使用?include_docs=true
你会得到这样的东西:
{rows:[
{key:["my_main_doc_id",0],doc:{my main document...}},
{key:["my_main_doc_id",1],doc:{child doc...}}
]}
请参阅此documentation