MongoDB:集合中的映射关系

时间:2014-06-01 20:03:00

标签: mongodb relationship monk

我不知道标题的描述性如何,所以请随意修改标题以便更好地理解。

我对MongoDB很新,到目前为止事情进展顺利。但是我遇到了一个非常基本的问题,我需要将其他集合中的文档/映射到其他集合中的文档。

简而言之,我有以下结构:

收集"会员"

{
  "_id": "abc",
  "name": "Mr. Abc"
}


{
  "_id": "def",
  "name": "Mrs. Def"
}

收藏"最近"

[{
  "_id": "123",
  "member_id": "abc",
  "action": "joined"
},
  "_id": "456",
  "member_id": "def",
  "action": "left"
}]

现在我想迭代"最近"并将所有成员映射为对象"成员"进入文件。

我使用monk(https://github.com/LearnBoost/monk)作为MongoDB的API,但无法找到任何解决方案。

到目前为止,我尝试使用.forEach()进行迭代,并添加来自" member"的所有结果。最近"。但是,由于查询是异步的,我无法使用我的回调来返回所有文档。

我读过有关游标等的内容,但无法找到任何可行的解决方案。所以我问你。

1 个答案:

答案 0 :(得分:2)

Mongo是非关系的,所以没有联接

2个查询:

var recent = db.recent.findOne({"id" : "123"})
db.member.find( {"id" : {$in : recent.member_id }});

然后您可以使用http://blog.modulus.io/getting-started-with-mongoose

之类的ORM

基于ForEach的方法讨论了如前所述加载客户端的问题:

    db.recent.find().forEach(
        function (rece) {
            rece.member = db.member.find( {"id" : {$in : rece.member_id }});
            db.recentMembers.insert(rece);
        }
    );

db.recentMembers.find().pretty()