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

tìm id của subocument mới nhất được chèn vào mongoose

Tôi cũng đang tìm kiếm câu trả lời này và tôi không chắc rằng tôi thích truy cập tài liệu cuối cùng của mảng. Tuy nhiên, tôi có một giải pháp thay thế. Phương thức m['b'].push sẽ trả về một số nguyên, 1 hoặc 0 - Tôi giả định rằng điều đó dựa trên sự thành công của lần đẩy (về mặt xác thực). Tuy nhiên, để có quyền truy cập vào tài liệu con và đặc biệt là _id của tài liệu con - bạn nên sử dụng create trước tiên, sau đó đến push .

Mã như sau:

var subdoc = m['b'].create({ ba: 234, bb: "World" });
m['b'].push(subdoc);
console.log(subdoc._id);
m.save(function(err, model) { console.log(arguments); });

Điều đang xảy ra là khi bạn truyền đối tượng vào phương thức push hoặc create, việc ép kiểu Schema sẽ xảy ra ngay lập tức (bao gồm những thứ như xác nhận và ép kiểu) - điều này có nghĩa là đây là thời điểm ObjectId được tạo; không phải khi mô hình được lưu trở lại Mongo. Trên thực tế, mongo không tự động gán giá trị _id cho các tài liệu con, đây là một tính năng của mongoose. Mongoose create được ghi lại ở đây:tạo tài liệu

Do đó, bạn cũng nên lưu ý rằng mặc dù bạn có _id tài liệu con - nó vẫn chưa có trong Mongo cho đến khi bạn lưu nó, vì vậy hãy cẩn thận với bất kỳ hành động DOCRef nào mà bạn có thể thực hiện.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ toBool

  2. Cách lập trình phân tách trước một khóa phân đoạn dựa trên GUID với MongoDB

  3. MongoDB là gì và nó hoạt động như thế nào?

  4. Làm cách nào để tải dữ liệu từ bộ sưu tập mongodb vào DataFrame của gấu trúc?

  5. MongoDB - Cập nhật hoặc Chèn đối tượng trong mảng