0

在使用 java mongo 驱动程序时,我对 WriteConcern、WriteResult 和 getLastError 有点困惑。

我理解 WriteConcern.SAFE 中不同的 WriteConcerns 的含义导致写入操作阻塞,直到驱动程序收到来自 mongodb 服务器的确认。我也很困惑,当写作出现问题时会发生什么。

例如

DBCollection collectionHandle = ...
DBObject criteria = ...
WriteResult result = collectionHandle.remove(criteria, WriteConcern.SAFE)

如果写操作失败,如何检测失败?驱动程序的“删除”调用是否引发异常?是否需要检查 WriteResult?如果检查 WriteResult 是否会调用 getError 或 getLastError?

谢谢,

弥敦道

4

1 回答 1

1

如果写操作失败,如何检测失败?驱动程序的“删除”调用是否引发异常?

是的你是对的。如果您正在使用WriteConcern.SAFE(及以上),驱动程序会在内部检查 getLastError 并在结果文档包含错误时抛出异常。因此,在这种情况下,您不必检查WriteResult. 这对于基于字符串的写入关注(例如“多数”)也是如此。

对于“较低” WriteConcern(NORMAL 或 NONE),驱动程序只返回 aWriteResult并且不会引发异常。您将不得不手动检查它的错误属性。如果一切顺利,则为空,否则发生错误。

于 2013-08-29T21:53:29.223 回答