gpt4 book ai didi

java - 将 Mongo 升级到 3.x; insert 不再返回 WriteResult

转载 作者:行者123 更新时间:2023-11-30 07:05:52 25 4
gpt4 key购买 nike

我们正在将 Mongo 从版本 2.x 升级到 3.x,我的任务是将旧的(Java)代码更新到新版本的所有内容,试图避免不推荐使用的方法,但尝试更改功能尽可能少。我没有编写原始版本的代码。

以下更改让我感到困惑。之前,我们使用 DBCollection.insert(args) 返回一个 WriteResult 对象。现在我们应该使用 MongoCollection.insertOne(args),但这不会返回任何内容。是否有另一种方法来生成 WriteResult 对象?

或者 Mongo 开发团队认为 WriteResult 对象不是必需的?我可以看到我们以相当无关紧要的方式使用它(只是记录),但我不想在没有充分理由的情况下删除它。

以上所有内容也适用于 insertMany,我认为它会有相同或相似的答案。

最佳答案

insertOne() 方法提供了一些优势来处理有问题的情况,因为 insert 需要一些手动检查,例如

1.) 它支持错误处理意味着你必须在try-catch block 中使用插入代码,它可以简单地告诉你,出了问题(比如插入重复的内容)唯一索引的条目)因此请执行其他操作而不是当前流程。

InsertOne 返回:

  • void : mean successful completion of query
  • Exception : Various exceptions are thrown which represent the different-2 cause for failure insertion as
MongoWriteException - if the write failed due some other failure specific to the insert command
MongoWriteConcernException - if the write failed due being unable to fulfill the write concern
MongoException - if the write failed due some other failure

因此,您可以简单地添加三个 catch block 来处理插入失败的所有可能性,如果没有抛出异常,则意味着数据插入成功(无需检查任何内容,快速继续),代码将类似于

try {
.. insert query
}catch(MongoWriteException e){ .. handle something wrong with query}
catch(MongoWriteConcernException e){ .. handle something wrong with write-concern}
catch(MongoException e){ .. handle something else(unknown) went wrong}

咨询:您将得到

  • try-catch良好的实践可以减少问题代码

关于java - 将 Mongo 升级到 3.x; insert 不再返回 WriteResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40137495/

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