1

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

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

我做了一些研究,一些建议表明:

1:将需要的数据复制到数据库,然后进行查看,因为需要的数据现在在同一个数据库中。

替代建议是

2:从各个数据库中取出需要的数据,然后运行查询。

我想,在 1 和 2 之间进行比较,最好选择 1 作为较少的数据http

但不管是1还是2,作为数据复制还是不够好。

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

谢谢

例子:

DB_USER.Doc_User_A :{用户ID:A,用户名:A先生,用户电子邮件:A@A.com}

DB_LOG.Log_2013_11_11:{用户 ID:A,日志:Hello}

希望有一段时间像[A先生,2013_11_11,你好]

4

1 回答 1

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 发出文档和查询:

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

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

要请求一种类型,您需要:

function(doc) {
  if (doc.type=='user'){
    emit(doc.user_id, doc);
  }
}
于 2013-09-11T16:24:36.367 回答