MongoDB使用关联选择



我有两个集合,user_logs和用户,user_logs文档都有user_id字段,所以我需要一些来自user_logs的数据,但在同一查询中,我想检查用户与当前user_log相关的其他字段是否为空。我应该怎么做?

一个查询一次只能访问一个集合。Mongodb 不支持加入。这就是为什么他们建议您在文档中嵌入引用的数据。如果每个用户的日志文档不是太大,则可以更改在用户集合中嵌入该信息。给你这样的东西。

嵌入式用户集合:

{
    user_id : "uid1",
    logs : [
        { message : "Error: System shutdown", date : "2014-11-11" },
        { message : "Error: System shutdown", date : "2014-11-13" }
    ]
}

但是,如果要保留当前结构,则必须执行两个查询来查找users集合和user_logs集合之间的相关信息。

db.user_logs.insert([
    { _id : "ul1", log : "code 1", user_id : "u1" },
    { _id : "ul2", log : "code 2", user_id : "u1" }
]);
db.users.insert([
    { _id : "u1", name : "bob", user_logs_id : "ul1" },
    { _id : "u2", name : "smith", user_logs_id : "ul2" }
]);
var userId = db.user_logs.findOne({}).user_id;
db.users.findOne({ _id : userId })
//outputs
{ "_id" : "u1", "name" : "bob", "user_logs_id" : "ul1" }

最新更新