Criteria 类用于创建查询的中心类,它遵循流畅的 API 风格,因此您可以轻松地将多个条件链接在一起。
Criteria.where 方法的静态导入提高了可读性。
使用 Criteria 类定义查询时的查询条件相当于 SQL 的 where。
where(String key) 静态方法,用它可以很方便的定义查询条件,例如:
mongoTemplate.find(Query.query( Criteria.where("parameter3").lt(new Date()) .and("parameter2").regex("es")) )
and(String key) 与操作
gt(Object o) 大于
gte(Object o) 大于等于
in(Object... o) 包含
is(Object o) 等于
lt(Object o) 小于
lte(Object o) 小于等于
not() 非
regex(String re) 正则表达式
andOperator(Criteria... criteria) 创建与操作
orOperator(Criteria... criteria) 创建或操作
size(int size) 创建 $size 操作
演示 Criteria 类的基本用法,代码如下:
package com.hxstrive.springdata.mongodb.query; import com.hxstrive.springdata.mongodb.entity.Person; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.mongodb.core.MongoTemplate; import java.util.List; import static org.springframework.data.mongodb.core.query.Criteria.where; import static org.springframework.data.mongodb.core.query.Query.query; @SpringBootTest public class QueryDocumentDemo { @Autowired private MongoTemplate mongoTemplate; @Test public void contextLoads() { // 删除集合,清空数据 mongoTemplate.dropCollection(Person.class); // 准备数据 mongoTemplate.insert(Person.builder().id("1").name("Tom").age(22).build()); mongoTemplate.insert(Person.builder().id("2").name("Helen").age(29).build()); mongoTemplate.insert(Person.builder().id("3").name("Bill").age(37).build()); mongoTemplate.insert(Person.builder().id("4").name("Joe").age(48).build()); // 查询数据 // 年龄小于30岁,且名称中包含 “l” 字符 List<Person> result = mongoTemplate.query(Person.class) .matching(query(where("age").lt(30).and("name").regex("l"))) .all(); for(Person person : result) { System.out.println(person); } } }
运行示例,输出如下:
Person(id=2, name=Helen, age=29, version=0)
注意:上面静态导入了 Criteria.where 和 Query.query 两个便捷方法。
在后续章节中将逐一介绍 Criteria 的各个方法用法。