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

Cập nhật MongoDB Nhiều có Điều kiện

Bạn thực sự muốn massWrite () sử dụng hai "updateMany" thay vào đó, các câu lệnh bên trong nó. Biểu thức tổng hợp không thể được sử dụng để thực hiện "lựa chọn thay thế" trong bất kỳ hình thức nào của câu lệnh cập nhật.

db.country.bulkWrite([
  { "updateMany": {
    "filter": { "pop": { "$lt": 20000000 } },
    "update": { "$set": { "country": "Small Country" } }
  }},
  { "updateMany": {
    "filter": { "pop": { "$gt": 20000000 } },
    "update": { "$set": { "country": "Large Country" } } 
  }}
])

Vẫn còn tồn tại một "yêu cầu tính năng" trên SERVER-6566 cho "cú pháp có điều kiện", nhưng điều này vẫn chưa được giải quyết. API "số lượng lớn" thực sự đã được giới thiệu sau khi yêu cầu này được đưa ra và thực sự có thể được điều chỉnh như được hiển thị để làm nhiều hơn hoặc ít hơn điều tương tự.

Đồng thời sử dụng $ out trong một tuyên bố tổng hợp như đã được đề xuất khác không phải là một tùy chọn để "cập nhật" và hiện tại chỉ có thể ghi vào "bộ sưu tập mới". Thay đổi dự kiến ​​từ MongoDB 4.2 trở đi sẽ cho phép $ out để thực sự "cập nhật" một bộ sưu tập hiện có, tuy nhiên đây sẽ chỉ là nơi tập hợp được cập nhật khác với bất kỳ tập hợp nào khác được sử dụng trong quá trình thu thập dữ liệu từ đường ống tổng hợp. Vì vậy, nó không thể sử dụng đường dẫn tổng hợp để cập nhật giống nhau bộ sưu tập như những gì bạn đang đọc.

Tóm lại, hãy sử dụng massWrite () .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB, xóa đối tượng khỏi mảng

  2. Truy vấn Mongo để sắp xếp theo số lượng riêng biệt

  3. Làm cách nào để kiểm tra xem bộ sưu tập có tồn tại trong MongoDB hay không bằng cách sử dụng trình điều khiển C #?

  4. Làm cách nào để xoay vòng trên MongoDB

  5. MongoDB:Làm thế nào để đếm số lượng khóa trong một tài liệu?