我正在使用带有 Java API 的 MongoDB 编写一些 Java 代码,但我不确定 Javadoc 的某些部分。
在多线程上下文中,我使用DBCollection.html#update(com.mongodb.DBObject, com.mongodb.DBObject)更新唯一文档,但我看到两个线程可以尝试同时写入。在这种情况下,我观察到只完成了一次写入,因为 Mongodb 似乎使用乐观写入锁,但我想以编程方式找出写入是在哪个线程中写入的,而哪个不是。由于“无更新”行为是沉默的(我的意思是没有例外或其他什么),我搜索了 API 以某种方式回答我的问题,经过一些测试发现了这个方法:WriteResult#getN()
public int getN()
Gets the "n" field
Returns:
描述是,嗯……并不是很详尽。我的测试表明,赢得写入的线程有一个返回 1 和另一个 0 的 getN()。
所以我的问题是:有人可以证实这一点吗?