sql >> Database >  >> NoSQL >> MongoDB

Hoe geneste documenten recursief te doorkruisen in MongoDB

De eenvoudigste manier om dit te doen, is door bluebird-beloftes te gebruiken, met name de each , props , reduce en map methoden, afhankelijk van uw gebruik.

In jouw geval zou ik iets voorstellen in de trant van

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

Laat me weten hoe dat gaat!




  1. mongodb:vraag naar de tijdsperiode tussen twee datumvelden

  2. mongodb start niet op ubuntu 18.04

  3. Hoe kan ik in Morphia een ingesloten object in een ArrayList bijwerken?

  4. Hoe converteer je een hexadecimale tekenreeks naar een getal in mongodb?