java - 获取 java.lang.IllegalArgumentException “名称不能为空!” 更新 MongoDB 集合时
问题描述
当我要更新 mongoDB 中的现有集合条目时,我面临以下问题。我正在使用 Spring Boot 2.0。
我现有的 MongoDB 集合条目如下所示。我将更新以下集合的“external_item”。它在那个 json 位置有一个空键。
{
"TestItem" : {
"item1" : "value1"
},
"external_item" : {
"" : "keyIsEmptyOfThisValue",
"key2" : false
},
"links" : [],
"createdDate" : ISODate("2020-05-10T05:24:44.014Z"),
"updatedDate" : ISODate("2020-05-10T05:24:44.014Z")
}
为此,我将以下有效负载与带有 REST API 的 PUT 方法一起使用
{
"external_item" : {
"" : "keyIsEmptyOfThisValue",
"key2" : true
}
}
更新时出现以下问题。它说名称不能为空!。如何以这种方式更新 MongoDB 内容?
java.lang.IllegalArgumentException: Name must not be null!
at org.springframework.util.Assert.hasText(Assert.java:162)
at org.springframework.data.mongodb.core.convert.QueryMapper$Field.<init>(QueryMapper.java:591)
at org.springframework.data.mongodb.core.convert.QueryMapper.createPropertyField(QueryMapper.java:216)
at org.springframework.data.mongodb.core.convert.UpdateMapper.createPropertyField(UpdateMapper.java:169)
at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:122)
at org.springframework.data.mongodb.core.convert.QueryMapper.convertSimpleOrDBObject(QueryMapper.java:359)
at org.springframework.data.mongodb.core.convert.UpdateMapper.getMappedObjectForField(UpdateMapper.java:81)
at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:123)
at org.springframework.data.mongodb.core.MongoTemplate$11.doInCollection(MongoTemplate.java:1016)
at org.springframework.data.mongodb.core.MongoTemplate$11.doInCollection(MongoTemplate.java:1007)
at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:410)
at org.springframework.data.mongodb.core.MongoTemplate.doUpdate(MongoTemplate.java:1007)
at org.springframework.data.mongodb.core.MongoTemplate.updateFirst(MongoTemplate.java:985)
at com.pearson.socket.core.dao.MongoDriverImpl.updateFirst(MongoDriverImpl.java:127)
at com.pearson.socket.core.dao.AbstractDAOImpl.updateFirst(AbstractDAOImpl.java:92)```
解决方案
在旧版本的某个地方似乎有一个错误spring-data-mongodb
导致了这种情况。
考虑更新到较新spring-boot
的spring-data-mongodb
版本,例如,我知道spring-boot 2.2
使用spring-data-mongodb 2.2.6
空映射键更新实体是可行的。
推荐阅读
- amazon-web-services - 通知警报:超出上下文截止日期(可能的代理问题)
- reactjs - 使用 React 切换字体真棒图标
- angular - 通过使用路径宽度/高度在角度 7 中动态设置 SVG Viewbox
- google-sheets - 返回 #VALUE 的查询
- django-queryset - Django lte 和 gte 查询产生空查询集
- php - 从 PHP 中的多维数组中删除重复数组
- swift - 如何将双标签确认设置为新的 ios 主页滑动按钮?
- forms - 使用 Symfony 3 在 HTML 中添加验证码
- c# - 如何检查物体撞击地面的力度并在其周围产生爆炸性“力”
- c++ - MacOs - 编译 c++ OpenCv 返回未找到架构 x86_64 的符号