Как мне сделать get_or_create в pymongo (python mongodb)? - PullRequest
5 голосов
/ 15 июля 2011

Сначала найдите, существует ли соответствующий запросу документ.

В этом случае обновите этот документ новыми данными.

В противном случае вставьте новый документ в базу данных.

Ответы [ 2 ]

9 голосов
/ 15 июля 2011

Вы можете использовать «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

1 голос
/ 15 июля 2011
...