我在两个单独的集合中有以下文档:
booking: {
user: ObjectID(0)
}
user: {
_id: 0
name: 'John Doe'
}
有没有办法查询所有预订,以便在我的回复中,bookings[0].user
为我提供完整的用户文档而不仅仅是ObjectID?
答案 0 :(得分:1)
给出以下样本数据:
收集"预订":
{
"_id" : ObjectId("5a78c4517dedc1c2d1b61e3b"),
"booking" : {
"user" : 0
}
}
收集"用户":
{
"_id" : 0,
"name" : "John Doe"
}
您可以像这样使用$lookup:
db.getCollection('bookings').aggregate({
$lookup:
{
from: "users",
localField: "booking.user",
foreignField: "_id",
as: "booking.user"
}
})
这将为您提供以下结果文档:
{
"_id" : ObjectId("5a78c4517dedc1c2d1b61e3b"),
"booking" : {
"user" : [
{
"_id" : 0,
"name" : "John Doe"
}
]
}
}