sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose befolka inbäddad

Från och med Mongoose 3.6 har möjligheten att rekursivt fylla i relaterade dokument i en fråga lagts till. Här är ett exempel på hur du kan göra det:

 UserList.findById(listId)
         .populate('refUserListItems')
         .exec(function(err, doc){
             UserListItem.populate(doc.refUserListItems, {path:'refSuggestion'},
                   function(err, data){
                        console.log("User List data: %j", doc);
                        cb(null, doc);
                   }
             );     
          });           

I det här fallet fyller jag i en rad id:n i 'refUserListItems' med deras refererade dokument. Resultatet av frågan skickas sedan till en annan ifyllningsfråga som refererar till fältet för det ursprungliga ifyllda dokumentet som jag också vill fylla i - 'refSuggestion'.

Notera den andra (interna) befolkningen - det är här magin händer. Du kan fortsätta att kapsla dessa populationer och ta tag i fler och fler dokument tills du har byggt din graf som du behöver den.

Det tar lite tid att smälta hur det här fungerar, men om du går igenom det är det vettigt.



  1. Mongoose 'statiska' metoder kontra 'instans' metoder

  2. Vad är det korrekta sättet att göra en HAVING i en MongoDB GROUP BY?

  3. TypeError:ObjectId('') kan inte serialiseras med JSON

  4. Ändra åtkomst från MS Excel?