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

Giá trị mặc định không được đặt trong khi sử dụng Cập nhật với Nâng cấp là đúng

Để thêm mặc định vào tài liệu của bạn nếu nó được tạo bằng findOneAndUpdate (nó không tồn tại trước truy vấn) và bạn không cung cấp trường trong bản cập nhật mà bạn nên sử dụng setDefaultsOnInsert .

Khi upsertsetDefaultsOnInsert cả hai true , các giá trị mặc định sẽ được đặt nếu không tìm thấy bản ghi và một bản ghi mới được tạo. Điều này bỏ qua quy trình làm việc phải kiểm tra xem bản ghi có tồn tại hay không và nếu không, hãy tạo một bản ghi mới với 'save' chỉ để đảm bảo các giá trị mặc định được đặt .

Tôi đã gặp vấn đề tương tự (bản ghi được tạo bằng findOneAndUpdate với upsert: true ) và giá trị mặc định cho một trường không được thêm vào bản ghi, ngay cả khi nó nằm trong lược đồ. Điều này chỉ liên quan đến việc thêm giá trị mặc định khi sử dụng findOneAndUpdate để tạo tài liệu, không phải để bỏ qua cập nhật trường 'đã tạo'.

ví dụ:

User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để hiển thị dữ liệu vô danh, tùy ý trong HTML với node.js / mongodb

  2. Cách chèn vào bộ sưu tập MongoDB với một vị trí

  3. Chọn giá trị cuối cùng của mảng trong tài liệu con

  4. Làm cách nào để sắp xếp truy vấn MongoDB trên các chuỗi có hậu tố -number?

  5. cách thực thi lệnh quản trị mongo từ java