MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

População de mangusto incorporada


A partir do Mongoose 3.6, a capacidade de preencher recursivamente documentos relacionados em uma consulta foi adicionada. Aqui está um exemplo de como você pode fazer isso:
 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);
                   }
             );     
          });           

Nesse caso, estou preenchendo uma matriz de IDs em 'refUserListItems' com seus documentos referenciados. O resultado da consulta é então passado para outra consulta de preenchimento que faz referência ao campo do documento preenchido original que também quero preencher - 'refSuggestion'.

Observe o segundo preenchimento (interno) - é aqui que a mágica acontece. Você pode continuar a aninhar esses preenchimentos e adicionar mais e mais documentos até que você tenha construído seu gráfico do jeito que você precisa.

Leva um pouco de tempo para digerir como isso está funcionando, mas se você trabalhar com isso, faz sentido.