Bạn có thể làm điều đó với một cái gì đó như thế này trong MongoDB 3.2 giả sử bộ sưu tập có các chi tiết là video.details
và trường bạn đang tham gia bên trái là _id
:
[
{
$unwind:"$videos"
},
{
$lookup:{
from:"video.details",
localField:"videos.videoId",
foreignField:"_id",
as:"details"
}
},
{
$group:{
_id:"$_id",
name:{
$first:"$name"
},
videos:{
$push:{
videoId:"$videos.videoId",
videoDetails:"$details"
}
}
}
}
]
Vì vậy, về cơ bản bạn thực hiện tra cứu nhưng sau đó trong giai đoạn nhóm $ xây dựng đầu ra theo cách bạn muốn. bạn có thể không cần giai đoạn $ unwind đầu tiên nếu bạn đang sử dụng MongoDB 3.3.4 trở lên (trước đó $ lookup trên mảng không được phép).