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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MongoTemplate是Spring Data MongoDB提供的一个MongoDB操作模板,它封装了对MongoDB的常用操作方法。以下是MongoTemplate增删改查语法示例: 1. 插入文档(增加数据): 使用`insert()`方法插入单个文档: ```java mongoTemplate.insert(objectToInsert, collectionName); ``` 使用`insertAll()`方法插入多个文档: ```java mongoTemplate.insertAll(listOfObjectsToInsert); ``` 2. 查询文档(查询数据): 使用`find()`方法查询文档: ```java mongoTemplate.find(query, Object.class, collectionName); ``` 查询所有文档: ```java mongoTemplate.findAll(Object.class, collectionName); ``` 3. 更新文档(修改数据): 使用`updateFirst()`方法更新单个文档: ```java mongoTemplate.updateFirst(query, update, Object.class, collectionName); ``` 使用`updateMulti()`方法更新多个文档: ```java mongoTemplate.updateMulti(query, update, Object.class, collectionName); ``` 4. 删除文档(删除数据): 使用`remove()`方法删除单个文档: ```java mongoTemplate.remove(query, Object.class, collectionName); ``` 使用`removeMulti()`方法删除多个文档: ```java mongoTemplate.remove(query, Object.class, collectionName); ``` 其中,`mongoTemplate`是你创建的MongoTemplate对象,`query`是查询条件,`update`是更新操作的内容,`Object.class`表示要查询或更新的文档类型,`collectionName`是集合名称。你可以根据自己的需求使用不同的查询条件和更新操作来完成相应的操作。具体的语法和选项可以参考Spring Data MongoDB的官方文档。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值