【问题标题】:MongoWriteException when inserting into Mongodb with composite custom _id使用复合自定义 _id 插入 Mongodb 时出现 MongoWriteException
【发布时间】:2019-08-16 14:09:01
【问题描述】:

我有一个正在使用的 MongoDB 远程服务器。

我的 KEY 是一个自定义对象,其中包含其他嵌套对象。

简单的插入工作正常,但如果我尝试运行

collection.replaceOne(eq("_id", KEY), document, new UpdateOptions().upsert(true));

我得到 com.mongodb.MongoWriteException: 应用更新后,发现(不可变)字段 '_id' 已更改为 _id: .......

如果我的键中只有原语,它可以正常工作。当然 KEY 的值是没有变化的(一直跟踪下去)。

这是一个带有 ReplaceOne 功能的 Mongo Java 驱动程序错误吗?

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

    对于 Mongo 过滤器,json 属性的顺序很重要。通过调试,可以查看过滤器中属性的实际顺序,然后您可以使用 @JsonPropertyOrder("att1", att2") 设置模型属性顺序,以便它们按顺序匹配。

    Mongo 团队的一名成员证实了这一点。 Mongo票->https://jira.mongodb.org/browse/JAVA-3392

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 2012-02-09
      • 2018-11-06
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多