0

I have a Java entity PostsHolder wchich in MongoDB looks like this:

{
   "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",
         }
      }
   ]
}

I want to update every post value field if type == 'typeX'.

How can I do this?

I've tried the below code but it changes only the first occurence in posts collection:

    WriteResult wr = mongoTemplate.updateMulti(
        new Query(where("posts.inner.type").is("typeX")),
        new Update().set("posts.$.inner.value", "changedValue"),
        PostHolder.class,
        "post_holder"
    );
Krzysztof Majewski
  • 2,494
  • 4
  • 27
  • 51

0 Answers0