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

Cập nhật đối tượng lồng nhau trong MongoDB nếu nó tồn tại, nếu không hãy thêm nó

Để chèn một tài liệu nếu không tồn tại được thực hiện bằng cách upert và nếu bạn muốn cập nhật một tài liệu nhúng có điều kiện, bạn cần toán tử $ positional. Vì vậy, bạn cần sử dụng cả hai trong truy vấn để triển khai chức năng trên.

Nhưng hiện tại mongodb không hỗ trợ nâng cấp với toán tử $ positional

Vì vậy, những gì bạn muốn không thể thực hiện trong một truy vấn ngay bây giờ, hoặc bạn có thể thực hiện trong hai truy vấn.

Đầu tiên

db.collection('ratings').update(
  {"refid":refid, "votes.ip": ip},
  {
     $set: { "votes.$.rating":rating }
  }
)

Nó trả về số lượng tài liệu được cập nhật, nếu là 1 thì tốt, còn nếu là 0 thì bạn cần phải đẩy bản ghi mới.

db.collection('ratings').update( { "refid":refid, "votes.ip":{$ne: ip}},
    {$push: { votes: { "ip":ip , "rating":rating  }}
})

Ngoài ra còn có vé jira cho nhà điều hành vị trí và uperting, vui lòng bỏ phiếu cho vấn đề này nếu bạn muốn chức năng này trong mongodb. Dưới đây là liên kết của vấn đề

https://jira.mongodb.org/browse/SERVER-3326

( CHỈNH SỬA :Vé jira đã bị đóng lại với Sẽ không làm vào tháng 6 năm 2019)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Mongoose chọn tài liệu giữa một phạm vi ngày

  2. Node js / MongoDB mảng thiết lập bản sao trong javascript

  3. Thay đổi cấu trúc tài liệu trong mongodb bằng mongo shell

  4. Lưu nhiều tệp hình ảnh bằng tiện ích Kartik FileInput Widget

  5. Gọi đến phương thức không xác định MongoDB \ Driver \ ReadConcern ::isDefault ()