java - 更新 mongodb 中的双嵌套集合
问题描述
我PostsHolder
在 MongoDB 中有一个 Java 实体,看起来像这样:
{
"id":"1",
"name": "xxx"
"posts":[
{
"_id":"1",
"inner":{
"value":"value1",
"type":"typeX",
}
},
{
"_id":"2",
"inner":{
"value":"value2",
"type":"type1",
}
},
{
"_id":"3",
"inner":{
"value":"value2",
"type":"typeX",
}
}
]
}
我想更新每个post
value
字段,如果type == 'typeX'
。
我怎样才能做到这一点?
我已经尝试了下面的代码,但它只改变了posts
集合中的第一次出现:
WriteResult wr = mongoTemplate.updateMulti(
new Query(where("posts.inner.type").is("typeX")),
new Update().set("posts.$.inner.value", "changedValue"),
PostHolder.class,
"post_holder"
);
解决方案
推荐阅读
- python - 如何打开从 OracleDB 导出的 .xlsx 文件?
- excel - 使用 Excel VBA 解析 PDF 文档时 RPC 失败
- android - 何时需要将 RC 代码更新到 Android Q?
- excel-formula - 如何根据级别从问题库中提取测验问题
- javascript - 我在定位这个内联元素时做错了什么?
- python - 在 python 中创建嵌套列表/字典的正确方法是什么,类似于类似 json 的结构?
- javascript - 有没有办法从箭头函数捕获并返回火力错误?
- regex - 姓氏的正则表达式 - 如何提高效率和长度并且只允许 50 个字符
- python - 访问 API:TypeError:__init__() 得到了意外的关键字参数“编码”
- python - 如何格式化 Matplotlib 辅助 y 轴日期时间值