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.