MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да обхождате вложен документ рекурсивно в MongoDB

Най-лесният начин да направите това е да използвате обещанията на bluebird, по-специално each , props , reduce и map методи, в зависимост от вашия случай на употреба.

Във вашия случай бих предложил нещо от рода на

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

Кажете ми как става!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да премахнете напълно поле от документ на MongoDB?

  2. Частични индекси в mongodb / mongoose

  3. MongoDB:агрегирано поле за добавяне на $project със статична стойност

  4. Spring Boot свързва Mysql и MongoDb

  5. MongoDB с java изключение в основната нишка java.lang.NoClassDefFoundError:org/bson/conversions/Bson