MongoTemplate 测试增删改查

增加

在这里插入图片描述

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'

删除

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值