演算子$
を使用する場合 更新部分では、that array
を明示的に記述する必要があります クエリ部分で。だから、
mongoTemplate.updateFirst(
query(where("name").is("Award1")),
Update.update("brand.$.descr", "Desc2"),
Awards.class);
である必要があります
mongoTemplate.updateFirst(
query(where("name").is("Award1"))
.and("brand.name").is("Brand1"), // "brand" in "brand.name" is necessary, others according to your requirement
Update.update("brand.$.descr", "Desc2"),
Awards.class);
配列内の要素の位置がわかっている場合、 `$'は不要です。次のように試すことができます:
mongoTemplate.updateFirst(
query(where("name").is("Award1")),
Update.update("brand.0.descr", "Desc2"), // 0 is the index of element in array
Awards.class);
name
を処理するのと同じ方法 フィールド。