我正在 Django 中使用 mongoengine,
这是我的文档定义:
class Location(mongoengine.Document):
user_id = mongoengine.IntField(required=True)
point = mongoengine.GeoPointField(required=True)
我想这样做:
给定一个 user_id
和一个 point
:
如果没有包含此user_id
的文档,则使用user_id
和point
创建一个并保存;
否则,用 point
用 user_id
更新文档。
我可以用 mongoengine 在一个语句中做到这一点吗?
最佳答案
请注意,现在计划弃用 get_or_create
,因为 MongoDB 中没有事务支持,它无法确保原子性。
首选方式是update使用 upsert:
Location.objects(user_id=user_id).update_one(set__point=point, upsert=True)
更多关于 MongoDB documentation 的 upserts .
关于python - 如何用mongoengine做 "insert if not exist else update"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8447502/