MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara melintasi dokumen bersarang secara rekursif di MongoDB

Cara termudah untuk melakukannya adalah dengan menggunakan janji-janji bluebird, khususnya each , props , reduce dan map metode, tergantung pada kasus penggunaan Anda.

Dalam kasus Anda, saya akan menyarankan sesuatu seperti

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

Beri tahu saya bagaimana hasilnya!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoimport Docker Gagal:kesalahan saat menyambung ke server db:tidak ada server yang dapat dijangkau

  2. Temukan Nilai yang Tidak Mengandung Angka dalam SQL

  3. MongoDB:Tidak dapat terhubung ke master set replika baru

  4. Bisakah Anda memiliki mongo $push prepend alih-alih menambahkan?

  5. Bagaimana Cara Membuat Skema Luwak dengan Array ID Objek?