sql >> Base de Datos >  >> NoSQL >> MongoDB

Poblado de mangosta incrustado

A partir de Mongoose 3.6, se ha agregado la capacidad de completar recursivamente documentos relacionados en una consulta. Este es un ejemplo de cómo podría hacerlo:

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

En este caso, estoy completando una matriz de ID en 'refUserListItems' con sus documentos de referencia. El resultado de la consulta luego se pasa a otra consulta de relleno que hace referencia al campo del documento relleno original que también quiero rellenar:'refSuggestion'.

Tenga en cuenta la segunda población (interna):aquí es donde ocurre la magia. Puede continuar anidando estos datos y agregar más y más documentos hasta que haya creado su gráfico de la manera que lo necesita.

Lleva un poco de tiempo digerir cómo funciona esto, pero si lo resuelves, tiene sentido.