更新mongodb中的双嵌套集合

时间:2018-05-09 10:35:17

标签: java spring mongodb spring-data spring-mongo

我在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"
    );

0 个答案:

没有答案