python-3.x 如何防止update语句重复

g52tjvyc  于 2023-02-06  发布在  Python
关注(0)|答案(1)|浏览(127)

我的MongoDB收藏中有这样的文档:

my_dict = {"chat": 1, "entity": 2, "count": 55}

我需要更新它们,如果文档不存在**(完全)**,则插入一个新文档:

results_collection.update_one(my_dict,
                    {"$set": {"chat": 1,
                              "entity": 2,
                              "count": 60}},
                    upsert=True)

但如果文档存在,它就是在复制它!它应该只是更新,因为chatentity是相同的。但它是在插入一个新的。所以,我将有两个类似的文档,只有count不同。
看看这是如何在图片

中复制的,
我想要新的来代替上面的那个。
我该怎么做呢?

aiqt4smr

aiqt4smr1#

您需要找到匹配的文档。在您的情况下,您可以通过相同的字段来完成:

results_collection.update_one(
  {'chat': my_dict['chat'], 'entity': my_dict['entity']},
  {'$set': {'count': 60}},
                    upsert=True)

原始问题中的代码使用my_dict尝试查找要更新的匹配文档,但my_dict包含count,因此永远找不到该文档,从而创建了一个新文档...

相关问题