如何使用MongoDB在引用文档中查找

时间:2017-11-19 21:49:45

标签: mongodb

我正在使用MongoDB,我有一个问题:

Account: {
  _id: new ObjectId("<ID>"),
  name: "<NAME>"
}

User {
  _id: new ObjectId("<ID>"),
  email: "<EMAIL>",
  password: "<PASSWORD>",
  account: DBRef("accounts", ObjectId("<ID>"))
}

如何查找具有特定帐户名称的用户?

我试过了:

db.users.find({"account.$name": "<NAME>"});

但它不起作用。

我该怎么办? 这是一个好习惯吗?

我感谢任何帮助。

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用$lookup“返回”。首先找到您寻找的名称,然后$lookup找到users集合。在这里简化:

var r = [
     { id: "A", name: "buzz"}
     ,{ id: "B", name: "NOTbuzz"}
     ];
db.acct.drop();
db.acct.insert(r);


var r2 = [
      { email: "buzz@foo.com", account: "A"}
      ,{ email: "notbuzz@foo.com", account: "B"}
     ];

db.users.drop();
db.users.insert(r2);

db.acct.aggregate([
{$match: {"name": "buzz"}}
,{$lookup: { from: "users", localField: "id", foreignField: "account", as: "X"}}
                ]);

{
  "_id" : ObjectId("5a12007bfee383d2d2e74651"),
  "id" : "A",
  "name" : "buzz",
  "X" : [
    {
        "_id" : ObjectId("5a12007bfee383d2d2e74653"),
        "email" : "buzz@foo.com",
        "account" : "A"
    }
  ]
}