Det lyder som om du vil lave en "upsert". MongoDB har indbygget support til dette. Send en ekstra parameter til dit update()-kald:{upsert:true}. For eksempel:
key = {'key':'value'}
data = {'key2':'value2', 'key3':'value3'};
coll.update(key, data, upsert=True); #In python upsert must be passed as a keyword argument
Dette erstatter din if-find-else-update blok helt. Den indsættes, hvis nøglen ikke findes, og opdateres, hvis den gør det.
Før:
{"key":"value", "key2":"Ohai."}
Efter:
{"key":"value", "key2":"value2", "key3":"value3"}
Du kan også angive, hvilke data du vil skrive:
data = {"$set":{"key2":"value2"}}
Nu vil dit valgte dokument kun opdatere værdien af "key2" og lade alt andet være urørt.