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

mongoose không thể điền bằng loại Chuỗi

Hiện tại, chỉ ObjectId các giá trị tham chiếu đến _id của một bộ sưu tập khác có thể được sử dụng làm refs .

Đây là một cuộc thảo luận https://github.com/Automattic/mongoose/issues/2562

Tuy nhiên, nó có thể là một cải tiến trong tương lai.

Trên thực tế, không cần thêm default giá trị để populate , chỉ cần xác định fooAccessType như bên dưới

fooAccessType: {
    type: String, 
    ref: 'AccessType'
},  

Đối với population

FacilityPersonnel.findOne({_id:req.params.id})
    .populate('fooAccessType')
    .exec(

ObjectID được sử dụng trong populationObjectId là loại BSON 12 byte, được xây dựng bằng:

Vì vậy, SuperAdmin không đúng ObjectID . Bạn có thể sử dụng UUID làm giá trị mặc định của ObjectID

var uuid = require('node-uuid');

// ...
fooAccessType: {
    type: String, 
    default: uuid.v1, 
    ref: 'AccessType'
},  

Tuy nhiên, đoạn mã trên rất lạ, fooAccesType là tham chiếu đến AccessType tài liệu.

Khi cố gắng lưu trường field tài liệu, AccessType trước tiên nên được lưu, sau đó lấy ObjectID từ AccessType đã lưu này và gán nó cho fooAccessType , cuối cùng, lưu trường field mới tài liệu.

var access = new AccessType({});
access.save(function(err){
   if (err)
      // error handling
   else {
       facilityperson.fooAccessType = access._id;
       facilityperson.save(function(err) {

       });
   }
});

Đối với population

FacilityPersonnel.findOne({_id:req.params.id})
    .populate('fooAccessType')
    .exec(


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lỗi MongoDB:Không thể sử dụng ghi có thể thử lại với giới hạn =0

  2. Làm cách nào tôi có thể lấy n nhóm hàng đầu cho một tập hợp và tất cả các nhóm khác được kết hợp vào một nhóm khác?

  3. Thiết lập kết nối singleton với node.js và mongo

  4. Tài liệu phức hợp tổng hợp Mongodb với tra cứu lồng nhau

  5. Trong MongoDB, tôi đang sử dụng một truy vấn lớn, cách tôi sẽ tạo chỉ mục kết hợp hoặc chỉ mục đơn, Vì vậy, thời gian phản hồi của tôi tăng lên