sql >> Databáze >  >> NoSQL >> MongoDB

Jak rekurzivně procházet vnořeným dokumentem v MongoDB

Nejjednodušší způsob je použít sliby bluebird, konkrétně each , props , reduce a map v závislosti na vašem případu použití.

Ve vašem případě bych navrhl něco ve smyslu

var bluebird = require('bluebird');
var mongoose = require('mongoose');
var UserModel = mongoose.model('User');

function getUser(userId) {
  return UserModel.findOne({_id: userId}).lean().exec()
    .then(function(user){
      return bluebird.props({
        firstName: user.firstName,
        parents: bluebird.map(user.parents, getUser),
        children: bluebird.map(user.children, getUser),
        partner: bluebird.map(user.partner, getUser),
        sibling: bluebird.map(user.sibling, getUser)
      })
    });
}

// Then call getUser once on the root node, e.g.
getUser(rootUserObjectId)
  .then(function(userTree){
    console.log(userTree)
  })

Dejte mi vědět, jak to jde!




  1. Počítejte pole v kolekci MongoDB

  2. Sada replik MongoDB s jednoduchým ověřením hesla

  3. MONGODB [DEBUG] kurzor.refresh() pro kurzor 7078636577051629992

  4. mongodb, pymongo, agregát dává podivný výstup (něco o kurzoru)