java - Spring数据MongoTemplate更新嵌套数组失败
问题描述
JSON如下:
{
"_id" : ObjectId("5e01d02b0e3cfd2e4c5976f0"),
"name" :"SomeName",
"outerEntity" : {
"accounts" : [
{
"accountId" : "1235",
"type" : "SB",
"details" : [
{
"name" : "accountName",
"value" : "accName"
},
{
"name" : "ifsc",
"value" : "ICICI12122",
},
{
"name" : "address",
"value" : "address1",
}
]
}
],
"profiles" : null,
"orders" : null,
}
}
我正在尝试使用如下所示的 Mongotemplate 更新来更新字段。但更新没有发生。
Update data = new Update();
data.set("outerEntity.accounts.$.type", "somevalue");
对于每个细节对象,只更新值
data.set("outerEntity.accounts.details.$.value","someValue");
Query query = new Query();
query.addCriteria(Criteria.where("name").is("SomeName"));
mongoTemplate.updateFirst(query, update, UserDetails.class);
解决方案
您可以在应用程序级别使用以下方式执行此操作
Query query = new Query();
query.addCriteria(Criteria.where("name").is("SomeName"));
UserDetails details = mongoTemplate.findOne(query, UserDetails.class);
for(Account acc: details.outerEntity.accounts) {
for(Account.Detail detail : acc.details) {
detail.value = "someValue";
}
}
mongoTemplate.save(details);
推荐阅读
- ffmpeg - 批量转换嵌套目录中的多种视频格式
- python - 如何使用 SimpleNamespace 的属性列表而不是 dict 键列表?
- python - 对数据框列有条件时应用案例
- database - 如何插入具有从Postgres表中的最大值追赶的串行列的行
- python - Groupby 组作为 groupby 的参数适用于加速
- javascript - jQuery - 在选择下拉列表时执行 js 函数
- c# - 如何防止延迟执行在错误的时间爆炸?
- jquery - 通过 Ajax 加载的 dataTable 给出了 Uncaught ReferenceError
- java - 没有找到类 org.glassfish.jersey.media.multipart.FormDataContentDisposition 的消息正文阅读器
- python - 无法接收来自 Tello 无人机的视频流