MongoDB用引用的文档替换文档中的ObjectID引用?

时间:2018-02-05 20:51:47

标签: node.js database mongodb nosql mongodb-query

我在两个单独的集合中有以下文档:

booking: {
user: ObjectID(0)
}

user: {
_id: 0
name: 'John Doe'
}

有没有办法查询所有预订,以便在我的回复中,bookings[0].user为我提供完整的用户文档而不仅仅是ObjectID?

1 个答案:

答案 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"
            }
        ]
    }
}