Beberapa pembaruan dapat dilakukan pada dokumen yang sama, selama pembaruan tersebut tidak bertentangan (karenanya kesalahan "memiliki mod yang bertentangan dalam pembaruan").
Karena "$push" :{"bugs" :[{"name":"bug1", "count":1}]} dan "$inc" :{"bugs.0.count" :1} keduanya mencoba untuk memodifikasi bagian yang sama dari dokumen (yaitu array "bug"), mereka bertentangan.
Beberapa pembaruan dapat digabungkan jika masing-masing memengaruhi bagian dokumen yang berbeda:
misalnya:
> 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." }
>
Pembaruan berisi tiga operasi berbeda ($pushAll, $inc, dan $set), tetapi dapat diselesaikan dengan sukses, karena setiap operasi memengaruhi bagian dokumen yang berbeda.
Saya menyadari bahwa ini bukanlah apa yang Anda harapkan, tetapi mudah-mudahan ini akan memberi Anda sedikit pemahaman yang lebih baik tentang cara kerja pembaruan, dan mungkin memberikan beberapa gagasan tentang bagaimana pembaruan dan/atau dokumen Anda dapat direstrukturisasi untuk melakukan fungsi yang Anda inginkan. aplikasi membutuhkan. Semoga berhasil.