使用复合自定义 _id 插入 Mongodb 时出现 MongoWriteException

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

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

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

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

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

如果我在密钥中只有原语,它就可以正常工作。当然,KEY 的值没有改变(一直向下追踪)。

这是 ReplaceOne 函数的 Mongo Java Driver 错误吗?


慕哥6287543
浏览 93回答 1
1回答

qq_花开花谢_0

事实证明,对于 Mongo 过滤器,json 属性的顺序很重要。通过调试,可以查看过滤器中属性的实际顺序,然后您可以使用 @JsonPropertyOrder("att1", att2") 设置模型属性顺序,以便它们按顺序匹配。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java