当前位置: 首页 > 知识库问答 >
问题:

从java的mongoDB更新:如何_id现有的对象?

宗乐池
2023-03-14

我正在使用java和MongoDB的mongo-Jackson包装器。我通过查询我的一个字段(不是_id字段)找到一个对象,然后我需要知道_id字段值,净结果是更新还是插入。但是,我得到了一个异常:

com.mongodb.MongoException: No objects to return
    at net.vz.mongodb.jackson.WriteResult.getSavedId(WriteResult.java:97)

异常来自包装器,而不是MongoDB驱动程序本身。

WriteResult<EntityDocument, String> wr 
   = coll.update(DBQuery.is("corefEntityId", corefEntityId), up, true,  false);

做这件事的正确方法是什么(如果有的话)?

共有1个答案

宫瀚
2023-03-14

您需要使用findAndModify并将returNew设置为true

您可以查看JavaDoc

这段代码应该可以解决问题,但我还没有测试过。

<代码>coll。findAndModify(DBQuery.is(“corefEntityId”,corefEntityId),null,null,false,up,true,false)

 类似资料:
  • 我正在尝试更新MongoDB中嵌套对象中的一个键值。目前,我的做法是覆盖整个嵌套对象,我如何改变一个键-值对?

  • 我想在对象的现有状态上合并/覆盖新字段,这样param1就不会被删除 这样做 将导致MongoDB完全按照要求执行,并将some_key设置为该值。替换旧的。 我正在使用Java客户机,但任何示例都将受到赞赏

  • 我在MongoDB中使用Java驱动程序。我有一个集合中的文档id列表。我想在每个文档中更新一个字段,该文档的“\u id”等于列表中的一个文档id。在下面的示例中,我尝试了以下方法: 我的目的是用\u id=123、\u id=456和\u id=789更新文档,将其“field”属性设置为59。 我这样做对吗?

  • 问题内容: 这是我的杰森样品 我想更新SName,ZipCode,taxAmount,Quantity和text [1]值,可以通过任何方式进行。我正在文件中使用JSON,而更新标签正在纳入HashMap中 问题答案: 将用新值替换当前值。同样,您可以更新其他值。完成后,您可以使用以下方法将其转换回: 并将其写回到文件中。

  • 你好,我有这个文件 我想知道如何使用参数识别文档,并通过查找带有“Car”参数的产品并使用MongoDB Java驱动程序将价格更新为15来更新参数中的特定对象。 谢谢你

  • 问题内容: 我收集了约100万条记录,每个记录有20个字段。我需要更新每个记录(文档)中的整数字段,并向该字段随机分配1或2 。在游标遍历整个集合时如何执行此操作?第二次搜索MongoDB已经找到的对象只是为了能够更新它似乎不是一个好主意: 如何有效地更新具有不同值的巨大MongoDB集合的每个文档中的字段? 问题答案: 您的方法基本上是正确的。但是,我不会将这样的集合视为“巨大的”。您可以从sh