MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Peuple de mangouste intégré

Depuis Mongoose 3.6, la possibilité de remplir de manière récursive des documents associés dans une requête a été ajoutée. Voici un exemple de la façon dont vous pourriez procéder :

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

Dans ce cas, je remplis un tableau d'identifiants dans 'refUserListItems' avec leurs documents référencés. Le résultat de la requête est ensuite transmis à une autre requête de remplissage qui fait référence au champ du document rempli d'origine que je souhaite également remplir - "refSuggestion".

Notez la deuxième population (interne) - c'est là que la magie opère. Vous pouvez continuer à imbriquer ces éléments et ajouter de plus en plus de documents jusqu'à ce que vous ayez construit votre graphique comme vous en avez besoin.

Il faut un peu de temps pour digérer comment cela fonctionne, mais si vous travaillez dessus, cela a du sens.