我有一个MongoDb文档,链接到另一个Collection中的另一个。
收藏A就像
{ _id: ..., contact_id: ObjectId('1234') }
联系人集合类似于:
{ _id: ObjectId('1234'), name: 'Joe' }
我正在尝试查找链接联系人姓名为“Joe”
的所有A档案我无法理解你将如何做到这一点。
答案 0 :(得分:2)
您不能在单个查询中执行此操作,因为MongoDB不支持联接。相反,您必须将其分为两个查询:第一个获取Joe的_id
,第二个获取他的A
文档。我不确定你使用的语言是什么,但是在shell中:
db.A.find({contact_id: db.contacts.findOne({name: 'Joe'})._id});
答案 1 :(得分:0)
在@johnnyhk回答后,您可以使用MongoDB v3.2中引入的aggregation lookup进行此操作。
db.A.aggregate(
[
{
$lookup: {
localField: "contact_id",
from: "Contacts",
foreignField: "_id",
as: "contact"
}
},
{
$match: {
"contact.name": "Joe"
}
}
]
)