MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Use $ lookup em uma matriz de objetos


Você pode fazer isso com algo assim no MongoDB 3.2 assumindo que a coleção que tem os detalhes é video.details e o campo em que você está unindo à esquerda é _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"
            }
         }
      }
   }
]

Então, basicamente, você faz sua pesquisa, mas mais tarde, em um estágio de grupo $, cria a saída do jeito que você gosta. você pode não precisar do primeiro estágio $unwind se estiver usando o MongoDB 3.3.4 ou superior (anteriormente a $lookup em arrays não era permitida).