我正在使用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>"});
但它不起作用。
我该怎么办? 这是一个好习惯吗?
我感谢任何帮助。
提前致谢。
答案 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"
}
]
}