Het klinkt alsof je een "upsert" wilt doen. MongoDB heeft hiervoor ingebouwde ondersteuning. Geef een extra parameter door aan je update()-aanroep:{upsert:true}. Bijvoorbeeld:
key = {'key':'value'}
data = {'key2':'value2', 'key3':'value3'};
coll.update(key, data, upsert=True); #In python upsert must be passed as a keyword argument
Dit vervangt uw if-find-else-update-blok volledig. Het wordt ingevoegd als de sleutel niet bestaat en wordt bijgewerkt als dat wel het geval is.
Voor:
{"key":"value", "key2":"Ohai."}
Na:
{"key":"value", "key2":"value2", "key3":"value3"}
U kunt ook aangeven welke gegevens u wilt schrijven:
data = {"$set":{"key2":"value2"}}
Nu zal uw geselecteerde document alleen de waarde van "key2" bijwerken en al het andere onaangeroerd laten.