MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách duyệt đệ quy tài liệu lồng nhau trong MongoDB

Cách dễ nhất là sử dụng các lời hứa của bluebird, cụ thể là each , props , reducemap tùy thuộc vào trường hợp sử dụng của bạn.

Trong trường hợp của bạn, tôi muốn đề xuất một cái gì đó dọc theo dòng

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

Hãy cho tôi biết mọi chuyện diễn ra như thế nào!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Quảng cáo các trường con lên cấp cao nhất trong phép chiếu mà không cần liệt kê tất cả các khóa

  2. mongo export Cú phápError:thiếu; trước câu lệnh @ (shell):1:14

  3. Rails:lưu trữ dữ liệu được mã hóa trong cơ sở dữ liệu

  4. Tìm kiếm toàn văn MongoDB so với Lucene?

  5. quyền đối với thư mục dữ liệu mongodb