MongoTemplate用法

1.首先pom.xml

<!-- springboot 整合 mongodb   -->
   <dependency> 
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
        <version>2.0.0.RELEASE</version>
   </dependency>
引入

@Autowired
private MongoTemplate mongoTemplate;
 

插入数据(可以是一个对象,或者是一个对象集合)

List<SysUser> userList = new ArrayList<>();
userList.add(new SysUser(11,"1","白小飞","18888888888"));
userList.add(new SysUser(9,"1","白敬亭","13333333333"));
userList.add(new SysUser(5,"1","林宥嘉","14444444444"));
userList.add(new SysUser(6,"1","彭于晏","15555555555"));
userList.add(new SysUser(7,"1","周杰伦","16666666666"));
mongoTemplate.insert(userList, "userList");
SysUser sysUser = new SysUser(12,"1","黄小飞","18888888888");
mongoTemplate.insert(sysUser, "userList");
当存入的第一个数据类型是SysUser,名字是userList的时候,第二个存入数据就必须是SysUser类型的数据。

 

查询数据

查询单个数据和多个数据,模糊查询

//查询单个数据
    public SysUser findMongo() {
        Pattern pattern = Pattern.compile("^.*8$",Pattern.CASE_INSENSITIVE);
        Query query = new Query(Criteria.where("phone").regex(pattern));
        SysUser findOne = mongoTemplate.findOne(query,SysUser.class,"userList");
        return findOne;
    }
    //查询多个数据
    public List<SysUser> findListMongo() {
        //模糊查询以 ^开始 以$结束 .*相当于Mysql中的%
        Pattern pattern = Pattern.compile("^1.*$",Pattern.CASE_INSENSITIVE);
        Query query = new Query(Criteria.where("phone").regex(pattern));
//        Query query = new Query(Criteria.where("status").is("1"));
//        query.with(new Sort(Direction.DESC,"phone"));  //按手机号码倒序
         List<SysUser> findList = mongoTemplate.find(query,SysUser.class,"userList");
        return findList;
    }
多个条件查询

//多个条件查询(格式1)
    public List<SysUser> findList(){
        Query query = new Query();
        query.addCriteria(Criteria.where("name").is("秦岚"));
        query.addCriteria(Criteria.where("phone").is("12222222222"));
        List<SysUser> findList = mongoTemplate.find(query, SysUser.class,"userList");
        return findList;
    }
 

//多个条件查询(格式2)
public List<SysUser> findList2(){
    Criteria criteria = new Criteria();
    criteria.and("name").is("秦岚");
    criteria.and("phone").is("12222222222");
    Query query = new Query(criteria);
    List<SysUser> findList = mongoTemplate.find(query, SysUser.class,"userList");
    return findList;
}
//一个模糊关键字匹配多个字段
    public List<SysUser> findList3(){
            
        Pattern pattern = Pattern.compile("^.*222$",Pattern.CASE_INSENSITIVE);
        Criteria  criteria = new Criteria();
        //phone以222结尾的 或者 name以222结尾的  
        criteria.orOperator(Criteria.where("phone").regex(pattern),
        Criteria.where("name").regex(pattern));
        //同时满足 phone以222结尾的,和name以222结尾的
       criteria.andOperator(Criteria.where("phone").regex(pattern),
        Criteria.where("name").regex(pattern));
            
        Query query = new Query(criteria);
        List<SysUser> find = mongoTemplate.find(query, SysUser.class,"userList");
        return find;
    }
 

更新。//更新
public int update() {
    Query query = new Query(); 
    query.addCriteria(Criteria.where("_id").is(1));  //_id区分引号 "1"和1
    Update update = Update.update("name", "zzzzz");
//    WriteResult upsert = mongoTemplate.updateMulti(query, update, "userList"); //查询到的全部更新
//    WriteResult upsert = mongoTemplate.updateFirst(query, update, "userList"); //查询更新第一条
    WriteResult upsert = mongoTemplate.upsert(query, update, "userList");      //有则更新,没有则新增
    return upsert.getN();       //返回执行的条数
    }
//添加内嵌文档数据(有则直接加入,没有则进行新增)
    public int update1() {
        Query query = Query.query(Criteria.where("_id").is("11"));
        SysUser user = new SysUser(1,"1","lisi","19999998745");
        Update update = new Update();
        update.addToSet("users", user);
        WriteResult upsert = mongoTemplate.upsert(query, update, "userList");
        return upsert.getN();
    }
//修改内嵌文档中数据
public int update2() {
    //查询_id为11并且其中userList文档的_id为1的
    Query query = Query.query(Criteria.where("_id").is("11").and("users._id").is(1));
    Update update = Update.update("users.$.name", "zhangsan");
    WriteResult upsert = mongoTemplate.upsert(query, update, "userList");
    return upsert.getN();
}
//删除内嵌文档中数据
    public int delete() {
    //查询_id为11并且其中userList文档的_id为1的
    Query query = Query.query(Criteria.where("_id").is("11").and("users._id").is(1));
    Update update = new Update();
    update.unset("users.$");
    WriteResult upsert = mongoTemplate.updateFirst(query, update, "userList");
    return upsert.getN();
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在MongoTemplate中进行排序,可以使用sort方法和Criteria对象。首先,您需要创建一个Criteria对象,用于指定排序的字段和顺序。然后,将该Criteria对象传递给sort方法,以指定排序的方式。 下面是一个示例代码,演示如何在MongoTemplate中进行排序: ```java import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; @Autowired private MongoTemplate mongoTemplate; public List<Student> getSortedStudents() { // 创建一个Criteria对象,指定排序的字段和顺序 Criteria criteria = Criteria.where("age").gte(18).lte(25); // 例如按照age字段升序排序 // 创建一个Sort对象,定义排序方式 Sort sort = Sort.by(Sort.Direction.ASC, "age"); // 创建一个Query对象,将Criteria和Sort对象传递给它 Query query = new Query().addCriteria(criteria).with(sort); // 使用MongoTemplate的find方法执行查询并返回结果 List<Student> sortedStudents = mongoTemplate.find(query, Student.class); return sortedStudents; } ``` 在上述示例中,我们首先创建了一个Criteria对象,使用where方法指定了排序的字段和范围。然后,我们创建了一个Sort对象,定义了排序的方式。接下来,我们创建了一个Query对象,并通过addCriteria方法将Criteria对象添加到Query对象中,并通过with方法将Sort对象添加到Query对象中。最后,我们使用MongoTemplate的find方法执行查询,并将结果返回。 请注意,上述示例中的Student类是一个示例实体类,您需要根据您的实际情况自定义实体类和字段。 : https://example.com : https://example.com : https://example.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值