Wygląda na to, że chcesz zrobić „upsert”. MongoDB ma wbudowaną obsługę tego. Przekaż dodatkowy parametr do wywołania update():{upsert:true}. Na przykład:
key = {'key':'value'}
data = {'key2':'value2', 'key3':'value3'};
coll.update(key, data, upsert=True); #In python upsert must be passed as a keyword argument
Zastępuje to całkowicie blok if-find-else-update. Wstawi, jeśli klucz nie istnieje, i zaktualizuje się, jeśli tak.
Przed:
{"key":"value", "key2":"Ohai."}
Po:
{"key":"value", "key2":"value2", "key3":"value3"}
Możesz również określić, jakie dane chcesz zapisać:
data = {"$set":{"key2":"value2"}}
Teraz wybrany dokument zaktualizuje tylko wartość „key2” i pozostawi wszystko inne nietknięte.