sql >> Databáze >  >> NoSQL >> MongoDB

Použijte $lookup v poli objektů

Můžete to udělat s něčím takovým v MongoDB 3.2 za předpokladu, že kolekce, která má podrobnosti, je video.details a pole, ke kterému se připojujete vlevo, je _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"
            }
         }
      }
   }
]

Takže v podstatě provedete vyhledávání, ale později ve fázi $ group vytvoříte výstup tak, jak se vám líbí. možná nebudete potřebovat první fázi $unwind, pokud používáte MongoDB 3.3.4 nebo vyšší (předtím nebylo $lookup na polích povoleno).




  1. MongoDB nezpracovává agregaci pomocí allowDiskUsage:True

  2. Jak naslouchat změnám v kolekci MongoDB?

  3. mongoose:najít nejnovější dokument

  4. Redis Publikovat/přihlásit se k odběru