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

Truyền đối tượng đơn giản sang tài liệu mongoose

Đăng câu trả lời của riêng tôi để câu trả lời này không tiếp tục mở:

Các kiểu máy phiên bản 4 (được phát hành ổn định vào ngày 23 tháng 3 năm 2015) hiện có hydrate() phương pháp. Sẽ không có trường nào được đánh dấu là bẩn ban đầu, nghĩa là một lệnh gọi đến save() sẽ không làm gì cho đến khi một trường bị đột biến.

https://github.com/LearnBoost/mongoose /blob/41ea6010c4a84716aec7a5798c7c35ef21aa294f/lib/model.js#L1639-1657

Điều rất quan trọng cần lưu ý là điều này được sử dụng để chuyển đổi một đối tượng JS thuần túy được tải từ cơ sở dữ liệu thành một tài liệu mongoose. Nếu bạn đang nhận tài liệu từ dịch vụ REST hoặc thứ gì đó tương tự, bạn nên sử dụng findById()update() .

Đối với những người sống nguy hiểm:

Nếu bạn thực sự muốn cập nhật một tài liệu hiện có mà không cần chạm vào cơ sở dữ liệu, tôi cho rằng bạn có thể gọi hydrate() , đánh dấu các trường là bẩn, rồi gọi save() . Điều này không quá khác so với phương pháp đặt doc.isNew = false; như tôi đã đề xuất trong câu hỏi ban đầu của tôi. Tuy nhiên, Valeri (từ đội cầy mangut) đề nghị không làm điều này. Nó có thể gây ra lỗi xác thực và các vấn đề trường hợp cạnh khác và nói chung không phải là phương pháp hay. findById thực sự nhanh chóng và sẽ không phải là nút thắt cổ chai của bạn.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để thực hiện tìm kiếm có điều kiện trong pymongo?

  2. Nút mongodb:Lỗi:kết nối bị đóng do lỗi phân tích cú pháp

  3. Rails 3:Cách sử dụng bản ghi hoạt động và mongoid cùng một lúc

  4. So sánh các mảng và trả về sự khác biệt

  5. Cách tạo, hiển thị và thả Bộ sưu tập trong MongoDB