Mongodb upsert文档或$ addToSet

时间:2018-08-04 07:18:59

标签: python-3.x mongodb pymongo upsert

因此,我正在尝试找出执行此操作的最佳方法。我已将文件转储到收藏集中。其中包括一个ID和一个作为数组的时间戳。基本上,我想完成的工作是,如果ID上有冲突,我想将新时间戳推送到数组,否则我要对整个文档进行高插入。我不知道它是否会改变任何东西,但是我正在使用pymongo。

1 个答案:

答案 0 :(得分:0)

如果您还想保留唯一的时间戳,则$addToSet operator可以与ups一起使用。否则,$push operator将用于在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
)

记录了有关pymongo.collection.Collection.update_one的更多信息。