我在MongoDB中有一个Java实体PostsHolder
,如下所示:
{
"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"
);