लगता है जैसे आप "अप्सर्ट" करना चाहते हैं। MongoDB ने इसके लिए बिल्ट-इन सपोर्ट दिया है। अपने अपडेट() कॉल के लिए एक अतिरिक्त पैरामीटर पास करें:{upert:true}। उदाहरण के लिए:
key = {'key':'value'}
data = {'key2':'value2', 'key3':'value3'};
coll.update(key, data, upsert=True); #In python upsert must be passed as a keyword argument
यह आपके if-find-else-update ब्लॉक को पूरी तरह से बदल देता है। यदि कुंजी मौजूद नहीं है तो यह सम्मिलित हो जाएगा और यदि ऐसा है तो अपडेट हो जाएगा।
इससे पहले:
{"key":"value", "key2":"Ohai."}
इसके बाद:
{"key":"value", "key2":"value2", "key3":"value3"}
आप यह भी निर्दिष्ट कर सकते हैं कि आप कौन सा डेटा लिखना चाहते हैं:
data = {"$set":{"key2":"value2"}}
अब आपका चयनित दस्तावेज़ केवल "key2" के मान को अपडेट करेगा और बाकी सब कुछ अछूता छोड़ देगा।