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

Nâng cấp các phần tử mảng phù hợp với tiêu chí trong tài liệu MongoDB?

Những gì bạn yêu cầu không thể thực hiện được bằng cách sử dụng một bản cập nhật mà không có một số logic phía ứng dụng. Lưu ý rằng nâng cấp dưới dạng một tính năng không liên quan đến vấn đề cụ thể này trừ khi bạn muốn tự động tạo tài liệu Widget mới nếu không có tài liệu nào tồn tại với tên đã cung cấp.

Vấn đề bạn đang gặp phải là không có chức năng nào cho phép bạn thực hiện hai cập nhật khác nhau tùy thuộc vào sự tồn tại của một phần tử mảng. Hai lựa chọn duy nhất của bạn là:

  1. Tìm mục, xác định sự tồn tại của (các) đối tượng thích hợp có liên quan, biên dịch bản cập nhật thích hợp với các thuộc tính mới hoặc thay đổi của bạn và thực thi nó. Điều này đi kèm với nhược điểm quan trọng là đây không phải là một phương pháp an toàn đồng thời. Nói cách khác, nếu hai dịch vụ web thực hiện điều này cùng một lúc, một dịch vụ có thể ghi đè các thay đổi của nhau.
  2. Đặt thuộc tính tiện ích làm tài liệu cấp cao nhất thay vì nhúng. Cho phép bạn sử dụng cảnh báo để làm những gì bạn muốn. Nhược điểm rõ ràng là đó không phải là một tùy chọn rất đẹp về mặt thiết kế lược đồ. Ví dụ:bạn sẽ không tự động nhận được tất cả các thuộc tính nếu bạn tìm nạp một tiện ích con.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không thể giải mã hóa PyMongo ObjectId từ JSON

  2. Gọi lại Mongoose.js instance.save () không kích hoạt

  3. MongoDB:Tính toán thời gian dừng giữa mỗi lần thay đổi giá trị trạng thái

  4. Giao dịch Mongodb v4.0, MongoError:Số giao dịch chỉ được phép trên một thành viên hoặc mongos đặt bản sao

  5. Mongoose Query để lọc một mảng và điền nội dung liên quan