Звучи така, сякаш искате да направите „подкачване“. MongoDB има вградена поддръжка за това. Предайте допълнителен параметър към извикването на update():{upsert: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" и ще остави всичко останало недокоснато.