






















这是一个创建于 824 天前的主题,其中的信息可能已经有所发展或是发生改变。
MongoDB 有一个 Document ,它的 Schema 如下
{
"_id": ObjectId // 主键
"status": String
}
数据库里面有一条数据
{
"_id": 1,
"status": "waiting"
}
现在两个线程 A,B ,线程 A 和 B 并发执行 findOneAndUpdate({"_id": "1", "status": "waiting"}, {$set: { "status": "running"}})
虽然 findOneAndUpdate 是原子操作,但是有没有可能同时查找出该文档。
1 zhangqian99 2024 年 3 月 12 日虽然两个线程同时尝试执行 findOneAndUpdate 操作,因为操作的原子性,只有一个线程能成功更新文档。虽然条件相同,另一个线程会找不到匹配的文档来更新 |
2 cyhulk 2024 年 3 月 12 日@zhangqian99 他的问题是 find 并发的时候能不能读到,感觉可以读到但是更新不了,没有 mysql 的那些事务隔离吧 |
3 shakeyo 2024 年 3 月 12 日可以读到但更新不了,读取跟更新是一个原子操作,没有更新的线程不会读取到数据,因为 status 已经改变 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。