springboot(java)操作mongodb查询数据 作者:马育民 • 2021-08-14 18:45 • 阅读:10136 上接:[springboot(java)操作mongodb创建工程](https://www.malaoshi.top/show_1IX1fPqX9Oje.html "springboot(java)操作mongodb创建工程") # Query 定义查询的所有要素,其中包括 **筛选条件**、**排序**、**跳过行数**、**返回条数** 等内容 ### query 静态方法,创建 `Query` 对象 语法: ``` public static Query query(CriteriaDefinition criteriaDefinition) ``` 需要传入 `Criteria` 查询条件对象 ### skip 跳过 n 条记录 ``` public Query skip(long skip) ``` 与 `limit()` 搭配,实现分页 ### limit 返回 n 条记录 ``` public Query limit(int limit) ``` 与 `skip()` 搭配,实现分页 ### with 传入 Sort 实现排序 ``` public Query with(Sort sort) ``` ### with 传入 `PageRequest` 分页对象,使用起来更简单 ``` public Query with(Pageable pageable) ``` ### addCriteria 添加一个 Criteria 查询条件对象 ``` public Query addCriteria(CriteriaDefinition criteriaDefinition) ``` # Criteria 查询条件类,用于定义查询条件,相当于SQL的where ### where 静态方法,创建 `Criteria` 对象 ``` where(String key) ``` **解释:** - key:查询条件 ### is 等于 ``` is(Object o) ``` ### ne 不等于 ``` ne(Object o) ``` ### in 包含,相当于 SQL 中的 `in` ``` in(Object ... o) ``` ### gt 大于 ``` gt(Object o) ``` ### gte 大于等于 ``` gte(Object o) ``` ### lt 小于 ``` lt(Object o) ``` ### lte 小于等于 ``` lte(Object o) ``` ### and 与操作 ``` and(String key) ``` ### not 非操作 ``` not(String key) ``` ### andOperator 创建与操作 ``` andOperator(String key) ``` ### notOperator 创建非操作 ``` notOperator(String key) ``` ### regex 正则表达式 ``` regex(String re) ``` # Sort 排序类,使用此类可以实现查询排序 ### by 静态方法,创建 `Sort` 对象 ``` public static Sort by(String... properties) ``` **解释:** - properties:排序字段 ### ascending() 升序 ### descending() 降序 ### and 链接排序条件 ``` and(Sort sort) ``` # PageRequest 分页对象,使用起来更简单 ### of 静态方法,创建 `PageRequest` 分页对象 ``` public static PageRequest of(int page, int size) public static PageRequest of(int page, int size, Sort sort) ``` **解释:** - page:页数,从0开始 - size:每页记录数 - sort:排序对象 # junit 在 `/test/java` 下创建测试类: ``` @SpringBootTest public class Test { @Resource private MongoTemplate mt; //查询全部 @org.junit.jupiter.api.Test public void find(){ List list=mt.findAll(User.class); for(User item:list){ System.out.println(item); } } //查询条件 @org.junit.jupiter.api.Test public void query(){ Sort sort=Sort.by("age").ascending(); Query q=Query.query(Criteria.where("")).with(sort);//查询全部 // Query q=Query.query(Criteria.where("age").is(20));//age等于20 // Query q=Query.query(Criteria.where("age").gte(20));//age大于等于20 List list=mt.find(q,User.class); for(User item:list){ System.out.println(item); } } //查询分页 @org.junit.jupiter.api.Test public void page(){ Sort sort=Sort.by("age").ascending(); // Query q=Query.query(Criteria.where("")).skip(0).limit(2).with(sort);//分页查询 Pageable pageable= PageRequest.of(0,2,sort);//分页 Query q=Query.query(Criteria.where("")).with(pageable); List list=mt.find(q,User.class); for(User item:list){ System.out.println(item); } } } ``` 原文出处:http://malaoshi.top/show_1IX1fxj46Tz0.html