使用CouchDB视图是否可以进行多方连接?

时间:2017-10-16 10:01:28

标签: couchdb

在' sql-esque'中加入数据可以在MapReduce中使用,如these Standford course notesthis MSc thesis以及plagiarized copy of that thesis http://ijniet.org所提到的那样:p。

我有3个实体:

  1. A
  2. B
  3. C
  4. AB可以在列ab上加入,BC可以在列bc上加入。我认为我可以通过级联MapReduce任务实现这一点。但我不能以任何方式在CouchDB中做到这一点,无论是使用Map函数,减少函数,列表函数(使用MapReduce视图),还是这些的组合...

    在CouchDB中,您可以使用相同的连接键输出不同实体的文档。但据我所知,没有可能的map函数允许通过相同的键或键范围对多个实体进行分组?

    这适用于JOINS,其中每个连接的外键列都不同。

1 个答案:

答案 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