如果在更新两个键中,函数能否找到\和\修改运行一半?

2024-05-29 11:05:33 发布

您现在位置:Python中文网/ 问答频道 /正文

这里使用pymongo(Python):

Dict“update”包含两个键:

collection.find_and_modify(
    query={"_id": self.id},
    update={
        "$set": {"zzz.cur": xxx.chg},
        "$unset": {"zzz.bld": xxx.chg}
    }
)

有没有可能在出错时只执行“$set”? 另一个($unset)会失败吗?你知道吗

或者找到\u和\u modify总是保证两个键都执行? 我在找虫子。有时候在我的数据库里zzz.bld公司. 但我不明白为什么。所以我决定澄清一下。你知道吗

目前看来,这个函数有时会失败,只运行“$set”(我的假设)。你知道吗


Tags: andidupdatefindquerydictcollectionxxx
1条回答
网友
1楼 · 发布于 2024-05-29 11:05:33

find_and_modify被认为是原子的,因为它是affects only a single document。从docs

When modifying a single document, both findAndModify() and the update() method atomically update the document.

但是,我没有看到任何文档明确说明在发生错误时写操作是否是原子的。你知道吗

但是,好消息是,如果您知道这样一个错误是如何发生的,那么使用多线程程序创建一个测试数据库就很容易了,该程序会用这样的请求轰炸数据库,然后只需查看它是否真正是原子的。你知道吗

相关问题 更多 >

    热门问题