CouchDB加入或建议以下情况

时间:2013-09-06 00:52:16

标签: mapreduce couchdb

我有一个数据库,其中包含一个包含用户信息的文档列表,另一个包含用户日志文档的数据库。

SQL中,可能只是使用join,但似乎只用一个简单的查询就无法做到这一点。

我做了一些研究,一些建议显示:

  

1:将所需数据复制到数据库然后执行视图,因为需要的数据现在位于同一个数据库中。

另一个建议是

  

2:从每个数据库中提取所需的数据,然后运行查询。

我想,比较1和2之间,最好选择1作为http以外的数据。

但无论是1还是2,它们仍然不足以作为数据重复。

有人可以推荐更好的建议吗?

由于

示例:

DB_USER.Doc_User_A:{userID:A,userName:Mr A,userEmail:A@A.com}

DB_LOG.Log_2013_11_11:{userID:A,log:Hello}

期待有时候像[A先生,2013_11_11,你好]

1 个答案:

答案 0 :(得分:0)

您需要将用户和日志数据放在同一文档中,如下所示:

{id:1, user_id:123, type:'user', name:'maria'},
{id:2, user_id:123, type:'log', description:'test test test '},
{id:3, user_id:123, type:'log', description:'test1 test1 test1'},
{id:4, user_id:135, type:'user', name:'joão'},
{id:5, user_id:135, type:'log', description:'lalalalal lalallala '},

因此,当您创建map reduce时,您可以通过user_id发出doc和query:

function(doc) {
  emit(doc.user_id, doc);
}

然后,只需一个请求,您就可以通过一个请求获得所需的所有信息。

要求您提供一种类型:

function(doc) {
  if (doc.type=='user'){
    emit(doc.user_id, doc);
  }
}