MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwenden Sie $lookup in einem Array von Objekten

Sie können dies in MongoDB 3.2 mit etwas Ähnlichem tun, vorausgesetzt, die Sammlung mit den Details ist video.details und das Feld, in das Sie links eintreten, ist _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"
            }
         }
      }
   }
]

Im Grunde führen Sie also Ihre Suche durch, aber später in einer $group-Phase erstellen Sie die Ausgabe so, wie Sie es möchten. Möglicherweise benötigen Sie die erste $unwind-Stufe nicht, wenn Sie MongoDB 3.3.4 oder höher verwenden (vorher war $lookup auf Arrays nicht zulässig).