MongoTemplate 测试增删改查

增加

MongoTemplate 测试增删改查_第1张图片

T 可以是List

修改

/* 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"
}

MongoTemplate 测试增删改查_第2张图片

@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);

    }

MongoTemplate 测试增删改查_第3张图片
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'

删除

你可能感兴趣的:(MongoDB)