如何在pymongo(python mongodb)中执行get_or_create?

时间:2011-07-15 06:10:58

标签: python mongodb pymongo

首先,查找是否存在匹配查询的文档。

如果是,请使用新数据更新该文档。

否则,将新文档插入数据库。

3 个答案:

答案 0 :(得分:9)

您可以使用等于true的“upsert”。 然后,使用“upsert”为true运行的更新查询将完全按照您的要求执行。

  • 如果存在则更新。
  • 如果不存在则插入新内容。

来自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 :(得分:1)

答案 2 :(得分:0)

完整的测试示例。另请参阅$setOnInsert,它与$set不同,如果密钥存在,它将不会更改记录。

model.matrix(~ ., test[-1])