python-3.x - Mongodb upsert 文档或 $addToSet
问题描述
所以我试图找出最好的方法来做到这一点。我有一个文件转储,我放入一个集合中。这包括一个 ID 和一个作为数组的时间戳。基本上我想要完成的是,如果 ID 上存在冲突,我想将新时间戳推送到数组,否则我想更新整个文档。我不知道它是否会改变任何东西,但我正在使用 pymongo。
解决方案
如果您还想保留唯一的时间戳,则该$addToSet
运算符可以与 upsert 一起使用。否则,当字段发生冲突时,$push
运算符将用于将每个时间戳添加到数组的末尾。ID
实现此目的的示例查询如下:
from pymongo import MongoClient
from bson.objectid import ObjectId
from time import time
client = MongoClient()
db = client.experiments
id_ = ObjectId('5b6d2a8ed35b7caf9fde936f')
ts = time() + 300
db.sample.update_one(
{'ID': id_}, # filter
{'$addToSet': {'timestamp': ts}}, # update
upsert=True
)
推荐阅读
- view - 实体框架使用视图而不是表创建模型
- flutter - 创建带阴影的弧形卡片
- java - 使用 json 配置使用自定义转换器将 POJO 转换为 POJO
- c# - 如何调整图表大小超过屏幕分辨率?
- git - git pull 仅适用于上游主机 - 是否需要推送?
- python - 如何在多处理中运行 pandas concat?
- google-cloud-platform - 有很多 Compute Engine API 请求是否正常?
- ios - TabbarViewController iOS中的Swift Center Circle按钮
- python - 如何克服将 sqlite 文件加载到 colab 中的错误?
- android - 将单选按钮数据发送到 Kotlin 中的下一个活动