python - 如何用mongoengine做 "insert if not exist else update"?

标签 python django mongodb mongoengine

我正在 Django 中使用 mongoengine,
这是我的文档定义:

class Location(mongoengine.Document):  
    user_id = mongoengine.IntField(required=True)  
    point = mongoengine.GeoPointField(required=True)

我想这样做:
给定一个 user_id 和一个 point:
如果没有包含此user_id的文档,则使用user_idpoint创建一个并保存;
否则,用 pointuser_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/

相关文章:

Django 使用 kwargs 进行反向操作

python - 在 python 中处理异常

javascript - 如何在 node.js 中创建一个 Get 请求以按日期(可以是月、日或年)对请求求和?

python - 离线 python 打包,将所有必需的包放在单个 tar 或类似轮子的 java fat jar 中

python - 在 matplotlib 的颜色条中修复 ylabel 位置

如果缺少 csrf cookie,Django 1.6 HTTP_X_CSRFTOKEN header 将被忽略

javascript - Lambda NodeJS 没有插入到 MongoDB

node.js - Mongo 查询根据状态字段相对于其他文档状态查找单个文档

python - 在 Flask 应用程序中的模块之间共享对象

python 3 : Most common color in image kmeans data type match