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

cập nhật mongodb tài liệu phù hợp không thành công

Đó không phải là một thất bại mà là do thiết kế.

Trong API hoạt động hàng loạt , nếu bạn cung cấp một giá trị để cập nhật khớp với giá trị hiện có của tài liệu thì nó không được đánh dấu là đã sửa đổi và thực sự không thực hiện bất kỳ nỗ lực nào để viết lại tài liệu.

Kiểm tra đơn giản:

db.junk.insert({ "a": 1 })
WriteResult({ "nInserted" : 1 })

db.junk.update({ "a": 1},{ "$set": { "a": 2 }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

db.junk.update({ "a": 2 },{ "$set": { "a": 2 }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

db.junk.update({ "a": 2 },{ "$set": { "a": NumberInt(2) }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

db.junk.update({ },{ "$set": { "a": NumberInt(2) }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

Tất cả các hoạt động trong MongoDB shell kể từ phiên bản 2.6 đang thực sự sử dụng API hoạt động hàng loạt . Đây là nơi bạn thấy WriteResult xuất phát từ API đó như một bằng chứng điều này đang xảy ra.

Vì vậy, trường hợp ngắn gọn ở đây là nếu bạn có các mục "được chèn theo cách thủ công" thuộc đúng loại mà bạn đang sửa đổi, thì chúng sẽ không bị thay đổi.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. AttributeError:Đối tượng 'tuple' không có thuộc tính 'insert'

  2. Truy vấn để nhận dữ liệu X phút cuối cùng với Mongodb

  3. Làm cách nào để cập nhật nhiều trường bằng Update.Set trong MongoDB bằng trình điều khiển c # chính thức?

  4. Tham khảo toàn bộ tài liệu trong Đường ống tổng hợp MongoDB

  5. Xóa tài liệu nhúng trong một mảng tài liệu lồng nhau