mongodb - 用两个条件检查记录的最简单方法是什么,如果不存在则插入,如果存在一个或多个,则全部更新

标签 mongodb flask mongoengine

我有一个该死的时间做一个查询。

有一个building_id,用户名和正确的字段。

我们需要查看用户和特定建筑物是否存在任何记录(因为他们只能拥有一票)。

如果它不存在,我们需要插入一条新记录,其中包含 building_id、用户名和正确的。

如果确实存在,我们需要找到具有 building_id 和 username 的记录,并更新正确以成为新的投票。

我一直在玩保存、更新、get_or_create,它们都不断弹出错误。这将如何在 MongoEngine 中完成?

最佳答案

您可以使用简单的更新,将 upsert 和 multiple 设置为 true:

http://docs.mongodb.org/manual/reference/method/db.collection.update/

语法如下:

db.collection.update(
   <query>,
   <update>,
   { upsert: <boolean>, multi: <boolean> }
)

关于两个条件的检查,您的查询可以包含任意数量的内容。

我不知道你的收藏,但也许:
db.yourCollection.update({"user": "someUser", "buildindId": "someBuildingId"}, {"correct": "your correction"}, {upsert: true, multi: true})

关于mongodb - 用两个条件检查记录的最简单方法是什么,如果不存在则插入,如果存在一个或多个,则全部更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15539174/

相关文章:

Mongodb 数据存储性能 - 一个文档包含数组中的项目与每个项目包含多个文档

python - Flask 注册错误 : missing 1 positional argument

python - 使用 python 在 mongodb 中使用自定义 ID 类型

MongoDB - 创建索引的脚本

php - 将字段名称列入白名单以防止恶意数据操纵?

typescript - Mongoose - 无法访问 createdAt

python - 计算距离很慢

python - Flask View 显示 400 错误,而不是带有表单的模板

python - pip3 install Flask-MongoEngine 安装失败

mongodb - ListField(DictField()) 与 mongoengine