एक ही दस्तावेज़ पर कई अपडेट किए जा सकते हैं, जब तक कि वे अपडेट विरोध न करें (इसलिए "अपडेट में परस्पर विरोधी मोड हैं" त्रुटि)।
क्योंकि "$push" :{"bugs" :[{"name":"bug1", "count":1}]} और "$inc" :{"bugs.0.count" :1} दोनों कोशिश कर रहे हैं दस्तावेज़ के उसी हिस्से को संशोधित करें (अर्थात् "बग" सरणी), वे विरोध करते हैं।
यदि प्रत्येक दस्तावेज़ के किसी भिन्न भाग को प्रभावित करता है, तो अनेक अद्यतनों को जोड़ा जा सकता है:
उदाहरण के लिए:
> 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." }
>
अपडेट में तीन अलग-अलग ऑपरेशन शामिल थे ($pushAll, $inc, और $set), लेकिन सफलतापूर्वक पूरा करने में सक्षम था, क्योंकि प्रत्येक ऑपरेशन दस्तावेज़ के एक अलग हिस्से को प्रभावित करता था।
मुझे एहसास है कि यह ठीक वैसा नहीं है जैसा आप करने की उम्मीद कर रहे थे, लेकिन उम्मीद है कि यह आपको अपडेट कैसे काम करता है, इसकी थोड़ी बेहतर समझ प्रदान करेगा, और शायद कुछ विचार प्रदान करेगा कि आपके अपडेट और/या दस्तावेज़ों को उस कार्यक्षमता को करने के लिए कैसे पुनर्गठित किया जा सकता है जो आपके आवेदन की आवश्यकता है। सफलता मिले।