MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mungopopulation eingebettet

Ab Mongoose 3.6 wurde die Möglichkeit hinzugefügt, verwandte Dokumente in einer Abfrage rekursiv zu füllen. Hier ist ein Beispiel dafür, wie Sie es machen könnten:

 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 diesem Fall fülle ich ein Array von IDs in „refUserListItems“ mit ihren referenzierten Dokumenten. Das Ergebnis der Abfrage wird dann an eine andere Abfrage zum Auffüllen übergeben, die auf das Feld des ursprünglich ausgefüllten Dokuments verweist, das ich ebenfalls ausfüllen möchte – „refSuggestion“.

Beachten Sie die zweite (interne) Befüllung – hier passiert die Magie. Sie können diese Populationen weiter verschachteln und immer mehr Dokumente anhängen, bis Sie Ihr Diagramm so erstellt haben, wie Sie es benötigen.

Es braucht ein wenig Zeit, um zu verstehen, wie das funktioniert, aber wenn Sie es durcharbeiten, macht es Sinn.