Låter som att du vill göra en "upsert". MongoDB har inbyggt stöd för detta. Skicka en extra parameter till ditt update()-anrop:{upsert:true}. Till exempel:
key = {'key':'value'}
data = {'key2':'value2', 'key3':'value3'};
coll.update(key, data, upsert=True); #In python upsert must be passed as a keyword argument
Detta ersätter ditt if-find-else-update-block helt. Den infogas om nyckeln inte finns och uppdateras om den gör det.
Före:
{"key":"value", "key2":"Ohai."}
Efter:
{"key":"value", "key2":"value2", "key3":"value3"}
Du kan också ange vilken data du vill skriva:
data = {"$set":{"key2":"value2"}}
Nu uppdaterar ditt valda dokument endast värdet på "key2" och lämnar allt annat orört.