gpt4 book ai didi

java - MongoDB Java API : WriteResult#getN()

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:58:02 26 4
gpt4 key购买 nike

我正在使用带有 Java API 的 MongoDB 编写一些 Java 代码,但我不确定 Javadoc 的某些部分。

在多线程上下文中,我使用 DBCollection.html#update(com.mongodb.DBObject, com.mongodb.DBObject)更新一个 unique 文档,但我看到两个线程可以尝试并发写入。在这种情况下,我观​​察到只完成了一次写入,因为 Mongodb 似乎使用了乐观写入锁,但我想通过编程方式找出写入的是哪个线程,哪个不是。由于“无更新”行为是无声的(我的意思是没有异常(exception)或其他),我以某种方式搜索 API 来回答我的问题,经过一些测试发现了这个方法:WriteResult#getN()

public int getN()
Gets the "n" field
Returns:

描述是,嗯……不是很详尽。我的测试表明,赢得写入的线程有一个返回 1 的 getN(),另一个返回 0。

所以我的问题是:有人可以证实这一点吗?

最佳答案

来自 GetLastError() documentation

命令的返回值是一个包含各种字段的对象。下面列出了常用字段;可能还有其他字段。

  • ok - true 表示 getLastError 命令成功完成。这并不表示没有最后一个错误。
  • err - 如果非空,表示发生错误。值是错误的文本描述。
  • code - 如果设置,表示发生的错误代码。 connectionId - 连接的id
  • lastOp - 上次操作的 op-id

对于更新:

  • n - 如果已完成更新,则这是更新的文档数。

所以在这种情况下,“获取“n”字段”意味着获取 n,即更新的文档数。如果没有将“multi”设置为 true,它只能是 0 或 1。

关于java - MongoDB Java API : WriteResult#getN(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10662858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com