增加
T
可以是List<Object>
修改
/* 1 */
{
"_id" : "8ADC0D74FB6C4B08A6E3C2292D0A41D8",
"userName" : "kitty",
"passWord" : "12345",
"roles" : [
{
"_id" : 0,
"name" : "admin",
"permissions" : [
{
"_id" : 2,
"name" : "update"
}
]
}
],
"_class" : "com.peng.entity.UserInfo",
}
/* 2 */
{
"_id" : "364FF769E55A419D8A0F3712C84291AF",
"userName" : "Petter",
"passWord" : "1111111",
"roles" : [
{
"_id" : 1,
"name" : "admin",
"permissions" : []
},
{
"_id" : 0,
"name" : "admin",
"permissions" : []
},
{
"_id" : 3,
"name" : "admin",
"permissions" : []
}
],
"_class" : "com.peng.entity.UserInfo"
}
@Test
public void test7(){
Query query = new Query();
Criteria criteria = new Criteria();
criteria.and("_id").is("364FF769E55A419D8A0F3712C84291AF");
query.addCriteria(criteria);
//Update update = Update.update("passWord","111111");
Update update = Update.update("passWord","222222").set("userName","Petter1");//修改多个属性
UpdateResult result1 = mongoTemplate.updateMulti(query, update, UserInfo.class);
log.debug("UpdateResult:{}", result1);
}
rename
修改文档key
名称
.currentDate("userName")
$
$
运算符标识要更新的数组中的元素,而不显式指定元素在数组中的位置。
位置$
运算符充当匹配和的第一个元素
的占位符
全位置运算符$[]
指示更新运算符应修改指定数组字段中的所有元素。
@Test
public void test9(){
Query query = new Query();
Criteria criteria = new Criteria();
criteria.and("_id").is("364FF769E55A419D8A0F3712C84291AF").and("roles.name").is("admin");
query.addCriteria(criteria);
log.debug("result:{}", mongoTemplate.find(query,UserInfo.class));
//Update update = Update.update("roles.$.name","admin1");//修改匹配的第一个
Update update = Update.update("roles.$[].name","admin1");//修改匹配的所有
UpdateResult result1 = mongoTemplate.updateMulti(query, update, UserInfo.class);
log.debug("UpdateResult:{}", result1);
}
$
在修改语句中只允许出现一次
Update update = Update.update("roles.$.permissions.$.name","update1");//会有错误的
Caused by: com.mongodb.MongoWriteException: Too many positional (i.e. '$') elements found
in path 'roles.$.permissions.$.name'