ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SpringBoot操作mongodb

2022-03-20 17:30:25  阅读:198  来源: 互联网

标签:SpringBoot mongodb Criteria mongoTemplate query User Query 操作 class


1.快速构建一个项目

选择Web快速构建项目

2.导入依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <scope>test</scope>
      </dependency>

3.编写测试类(勾选了web,里面也会导入test的依赖)

public class MongoTest extends MongodbApplicationTests{
    private final MongoTemplate mongoTemplate;

    @Autowired
    public MongoTest(MongoTemplate mongoTemplate) {
        this.mongoTemplate = mongoTemplate;
    }
  
}

4.创建集合

 //1.创建集合
    @Test
    public void creatCollection(){
        boolean product = mongoTemplate.collectionExists("product");
        if(!product){
            mongoTemplate.createCollection("product");
        }
    }

5.删除集合

 //2.删除集合
    @Test
    public void deleteCollection(){
        mongoTemplate.dropCollection("product");
    }

6.实体类上的注解

 

@Document("users")
public class User {
    @Id
    private Integer id;
    @Field("userName")
    private String name;
    @Field("userSex")
    private String sex;
    @Field("age")
    private String age;
    @Transient
    private String weight;

7.save和insert方法

 //3.操作文档的新增方法
    @Test
    public void saveAndInsert(){
        //1.操作实体时,如果自己定义了id,新增时必须给id赋值,不然会报错,没有建立id的实体,那么会自动生成id
        //2.save方法,如果id存在,就是更新id对应这条数据
        User user = new User(4,"张思美", "女", 18, 110);
        mongoTemplate.save(user);
        //insert方法插入的id已存在时,会报错
        mongoTemplate.insert(user);
        //insert可以操作这个集合
        User panda = new User(3,"熊猫", "动物", 18, 1000);
        List<User> users = Arrays.asList(user, panda);
        mongoTemplate.insert(users,User.class);
    }

8.查询

 

 @Test
    public void find(){
        //查询所有findAll方法
        List<User> all = mongoTemplate.findAll(User.class);
        //通过id查询
        User byId = mongoTemplate.findById(1, User.class);
        //添加条件查询
        List<User> users = mongoTemplate.find(new Query(), User.class);
        Query query = new Query();
        List<User> users1 = mongoTemplate.find(query, User.class);
        //查询条件的使用
        List<User> users2 = mongoTemplate.find(Query.query(Criteria.where("userName").is("张思美")), User.class);
        //and的使用,注意查询的条件每个字段只有一个,不能重复
        List<User> users3 = mongoTemplate.find(Query.query(Criteria.where("userName").is("熊猫").and("userSex").is("动物")), User.class);
       //or的使用
        Criteria criteria = new Criteria();
        criteria.orOperator(Criteria.where("userName").is("张思美"),Criteria.where("userName").is("熊猫"));
        List<User> user4 = mongoTemplate.find(Query.query(criteria), User.class);
       //or和and连用
        List<User> users4 = mongoTemplate.find(Query.query(Criteria.where("userName").is("张思美").orOperator(Criteria.where("age").is(18))), User.class);
        //排序
        Query query1 = new Query();
        query1.with(Sort.by(Sort.Order.desc("age")));
        List<User> users5 = mongoTemplate.find(query1, User.class);
        //分页查询
        Query query2 = new Query();
        query1.with(Sort.by(Sort.Order.desc("age"))).skip(0).limit(1);
        List<User> users6 = mongoTemplate.find(query1, User.class);
        //12.去重 distinct
        //参数1:查询条件参数2:去重字段参数3:操作集合参数4∶返回类型
        List<String> stringList = mongoTemplate.findDistinct(new Query(),"name",User.class,String.class);
        //count
        long count = mongoTemplate.count(Query.query(Criteria.where("name").is("张思美")), User.class);
        System.out.println(count);
    }

9.修改

 //2.更新操作
    @Test
    public void updateCollection(){
        //更新第一条
        Update update = new Update();
        update.set("name","刘渝");
        mongoTemplate.updateFirst(Query.query(Criteria.where("name").is("张思美")),update,User.class);
        //更新全部
        mongoTemplate.updateMulti(Query.query(Criteria.where("name").is("张思美")),update,User.class);
        //查询条件没有的数据就直接插入
        UpdateResult upsert = mongoTemplate.upsert(Query.query(Criteria.where("name").is("张思美")), update, User.class);
        //匹配的条数
        System.out.println(upsert.getMatchedCount());
        //修改的条数
        System.out.println(upsert.getModifiedCount());
        //插入的id
        System.out.println(upsert.getUpsertedId());
    }

10.删除

 @Test
    public void deleteTest(){
        //删除所有文档
       mongoTemplate.remove(new Query(), User.class);
       //删除指定文档
        mongoTemplate.remove(Query.query(Criteria.where("name").is("熊猫")), User.class);
    }

标签:SpringBoot,mongodb,Criteria,mongoTemplate,query,User,Query,操作,class
来源: https://blog.csdn.net/qq_45721042/article/details/123610256

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有