MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Usa $lookup in un array di oggetti

Puoi farlo con qualcosa del genere in MongoDB 3.2 supponendo che la raccolta con i dettagli sia video.details e il campo in cui ti stai unendo a sinistra è _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"
            }
         }
      }
   }
]

Quindi fondamentalmente fai la tua ricerca ma più tardi in una fase di $gruppo costruisci l'output nel modo in cui ti piace. potresti non aver bisogno della prima fase di $unwind se stai usando MongoDB 3.3.4 o versioni successive (prima di quella $ la ricerca sugli array non era consentita).