Nhiều bản cập nhật có thể được thực hiện trên cùng một tài liệu, miễn là các bản cập nhật đó không xung đột (do đó, lỗi "có các mod xung đột trong bản cập nhật").
Bởi vì "$ push":{"bug":[{"name":"bug1", "count":1}]} và "$ inc":{"bug.0.count":1} đều đang cố gắng sửa đổi cùng một phần của tài liệu (cụ thể là mảng "lỗi"), chúng xung đột.
Nhiều bản cập nhật có thể được kết hợp nếu mỗi bản cập nhật ảnh hưởng đến một phần khác nhau của tài liệu:
ví dụ:
> db.test.drop()
true
> db.test.save({ "_id" : 1, "name" : "albert", "bugs" : [ ] })
> db.test.update({"name":"albert"}, {"$pushAll" : {"bugs" : [{"name":"bug1", "count":1}]}, "$inc" : {"increment" : 1}, $set:{"note":"Here is another field."}})
> db.test.find()
{ "_id" : 1, "bugs" : [ { "name" : "bug1", "count" : 1 } ], "increment" : 1, "name" : "albert", "note" : "Here is another field." }
>
Bản cập nhật có ba thao tác khác nhau ($ pushAll, $ inc và $ set), nhưng có thể hoàn tất thành công, vì mỗi thao tác ảnh hưởng đến một phần khác nhau của tài liệu.
Tôi nhận thấy đây không phải là chính xác những gì bạn hy vọng làm, nhưng hy vọng nó sẽ cung cấp cho bạn hiểu biết tốt hơn một chút về cách các bản cập nhật hoạt động và có thể cung cấp một số ý tưởng về cách các bản cập nhật và / hoặc tài liệu của bạn có thể được cấu trúc lại để thực hiện chức năng mà ứng dụng yêu cầu. Chúc may mắn.