sql >> Database >  >> NoSQL >> MongoDB

Mangoest bevolken ingebed

Vanaf Mongoose 3.6 is de mogelijkheid toegevoegd om gerelateerde documenten recursief in te vullen in een query. Hier is een voorbeeld van hoe u het zou kunnen doen:

 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 dit geval vul ik een array van id's in 'refUserListItems' met de documenten waarnaar wordt verwezen. Het resultaat van de query wordt vervolgens doorgegeven aan een andere invulquery die verwijst naar het veld van het oorspronkelijke ingevulde document dat ik ook wil invullen - 'refSuggestion'.

Let op de tweede (interne) populatie - hier gebeurt de magie. U kunt doorgaan met het nesten van deze populaties en op steeds meer documenten plakken totdat u uw grafiek hebt opgebouwd zoals u hem nodig hebt.

Het kost wat tijd om te begrijpen hoe dit werkt, maar als je er doorheen werkt, is het logisch.



  1. Geneste arrays in Mongoose

  2. Redis installeren en configureren op Ubuntu

  3. Redis sub/pub en php/nodejs

  4. Deadlock met behulp van Aggregator + Redis