Вы можете использовать «upsert», равный true.Тогда запрос на обновление, который вы запускаете с помощью «upsert» как true, будет делать то, что вам нужно.
- update, если существует.
- вставьте новый, если он не существует.
Из документации MongoDb:
db.collection.update( criteria, objNew, upsert, multi )
Arguments:
criteria - query which selects the record to update;
objNew - updated object or $ operators (e.g., $inc) which manipulate the object
upsert - if this should be an "upsert"; that is, if the record does not exist, insert it
multi - if all documents matching criteria should be updated
http://www.mongodb.org/display/DOCS/Updating
Пример:
db.test.update({"x": "42"}, {"$set": {"a": "21"}},True)
#True => Upsert is True
См. Документацию по обновлению здесь:
http://api.mongodb.org/python/current/api/pymongo/collection.html