相关疑难解决方法(0)

findOneAndUpdate 是否以原子方式执行更新?(因为 findAndModify 在 Java MongoDB 异步驱动程序中不可用)

我正在使用 MongoDB 的 Java 异步驱动程序版本 3.6,我没有看到findAndModify作为MongoCollection类的一部分实现的(我错了吗?),最接近的是findOneAndUpdate有人可以确认此操作将自动执行吗?

我了解并发更新是如何发生的。问题非常具体,是否原子(读+写)保证 findOneAndUpdate api 的原子性。这与询问如何使用 findAndmodify 不同。

mongodb mongo-java-driver

6
推荐指数
1
解决办法
5157
查看次数

MongoDB - WiredTiger快照与锁定

我并不完全理解这两个功能在(WiredTiger)MongoDB程序中如何相互关联:

1)WiredTiger快照

2)数据锁定

如果使用WiredTiger引擎的每次读取操作在读取时都提供了数据库级别"快照"(以便创建一致性(ACID中的C),为什么我们还需要锁定?让我们使用一个示例.

我在文档级别执行查询(读取操作).好的,所以我知道我得到了数据库级别的快照,所以我的数据是一致的,即使另一个用户同时写入同一个文档,更新它.

那么在这一点上,在该文档上使用Shared-Lock有什么用处,它会阻止对该文档的所有写入(独占)操作,直到发布共享锁定为止?在我阅读文档的同时写入该文档可能会出现什么问题,如果我实际上使用了在阅读时提供给我的文档快照?为什么我会关心文件在阅读操作期间是否被锁定?我已经从那个时间点得到了(一致的)数据,不是吗?

我显然在这里错过了一个关键概念......任何帮助?

谢谢.

database concurrency mongodb wiredtiger

2
推荐指数
1
解决办法
673
查看次数