首先,查找是否存在匹配查询的文档。
如果是,请使用新数据更新该文档。
否则,将新文档插入数据库。
答案 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)
设置upsert = True
答案 2 :(得分:0)
完整的测试示例。另请参阅$setOnInsert,它与$set不同,如果密钥存在,它将不会更改记录。
model.matrix(~ ., test[-1])