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

La mangusta popola incorporata

A partire da Mongoose 3.6 è stata aggiunta la possibilità di popolare ricorsivamente i documenti correlati in una query. Ecco un esempio di come potresti farlo:

 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);
                   }
             );     
          });           

In questo caso, sto popolando una matrice di ID in "refUserListItems" con i loro documenti di riferimento. Il risultato della query viene quindi passato a un'altra query popolata che fa riferimento al campo del documento popolato originale che voglio anche popolare - 'refSuggestion'.

Nota la seconda popolazione (interna):è qui che avviene la magia. Puoi continuare a nidificare questi popolamenti e aggiungere sempre più documenti fino a quando non avrai costruito il tuo grafico nel modo in cui ti serve.

Ci vuole un po' di tempo per digerire come funziona, ma se ci lavori, ha senso.