问题描述
mongodbTemplate 修改JSON [key: '1', key2: [{id:1, name: 'name'}] 中 key2.name属性
代码
java
Query query = Query.query(Criteria.where("key").is(1)
.and("key2.id").is(1)
.and("key2.name").is("name"));
Update update = new Update().set("key2.$.name", "new value");
mongoTemplate.updateFirst(query, update, Class_Name.class, collection_name);
补充
1.当更新的key2.$.name name属性不存在,会自动为该对象添加这个属性。
例如:
数组key2中id为1的对象存在,没有name属性,updateFirst方法将为这个对象添加一个name属性,并将其值设置为"new value"。
2.mongoTemplate.findOne 不指定collectionName
在Spring Data MongoDB中,collectionName通常是由被查询的实体类上的@Document注解所确定的,或者将会使用该类的简单名称(首字母小写)作为集合名。