詳細を含むコレクションがvideo.details
であると仮定すると、MongoDB3.2ではこのような方法でこれを行うことができます。 左結合しているフィールドは_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"
}
}
}
}
]
つまり、基本的にルックアップを実行しますが、後で$ groupステージで、好きな方法で出力を作成します。 MongoDB 3.3.4以降を使用している場合は、最初の$ unwindステージは必要ない場合があります(以前は、配列での$ lookupは許可されていませんでした)。