sql >> Databasteknik >  >> NoSQL >> MongoDB

Använd $lookup i en array av objekt

Du kan göra det med något liknande i MongoDB 3.2 förutsatt att samlingen som har detaljerna är video.details och fältet du går med till vänster är _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"
            }
         }
      }
   }
]

Så i grund och botten gör du din uppslagning men senare i ett $-gruppssteg bygger du resultatet som du vill ha det. du kanske inte behöver det första $unwind-steget om du använder MongoDB 3.3.4 eller senare (före det var $lookup på arrayer inte tillåtna).




  1. mongodb räkna underdokument och lista totaler

  2. mongodb:upserting:ange endast värde om dokumentet infogas

  3. Flera frågor inuti mongodb-frågan

  4. Mongoose skickar data från withTransaction helper