数据库
首页 > 数据库> > SpringBoot操作mongodb

SpringBoot操作mongodb

作者:互联网

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