org.springframework.data.mongodb.core.query.Criteria
是 Spring Data MongoDB 项目中的一个类,它用于构建 MongoDB 查询条件。在 Spring Data MongoDB 中,你可以使用 Criteria
来定义复杂的查询,并将其与 Query
对象结合使用,以执行 MongoDB 集合的查询操作。
以下是如何使用 Criteria
来构建查询条件的示例:
- 基本使用:
Criteria criteria = new Criteria("name").is("John Doe");
Query query = new Query(criteria);
List<Person> people = mongoTemplate.find(query, Person.class, "collectionName");
在这个例子中,我们创建了一个 Criteria
对象,指定在 “name” 字段上查找值为 “John Doe” 的文档。然后,我们将这个 Criteria
对象传递给 Query
构造函数,并使用 mongoTemplate.find()
方法执行查询。
- 组合条件:
你可以使用 and
, or
等方法来组合多个 Criteria
对象。
Criteria nameCriteria = new Criteria("name").is("John Doe");
Criteria ageCriteria = new Criteria("age").gt(30);
Query query = new Query(new Criteria().andOperator(nameCriteria, ageCriteria));
List<Person> people = mongoTemplate.find(query, Person.class, "collectionName");
在这个例子中,我们创建了两个 Criteria
对象,一个用于 “name” 字段,另一个用于 “age” 字段。然后,我们使用 andOperator
方法将它们组合在一起,并传递给 Query
构造函数。
- 正则表达式:
如果你想在查询中使用正则表达式,你可以使用 regex
方法。
Criteria criteria = new Criteria("name").regex("Jo.*");
Query query = new Query(criteria);
List<Person> people = mongoTemplate.find(query, Person.class, "collectionName");
在这个例子中,我们在 “name” 字段上查找以 “Jo” 开头的所有文档。
- 其他比较操作符:
除了 is
和 regex
之外,Criteria
还提供了其他许多比较操作符,如 gt
(大于)、lt
(小于)、gte
(大于等于)、lte
(小于等于)、in
(在列表中)、nin
(不在列表中)、exists
(字段存在) 等。
5. 排序和分页:
虽然 Criteria
主要用于定义查询条件,但 Query
对象还提供了其他功能,如排序和分页。你可以使用 withSort
方法进行排序,使用 withSkip
和 withLimit
方法进行分页。
6. 使用 MongoDB 的聚合管道:
对于更复杂的查询和数据处理任务,你可能需要使用 MongoDB 的聚合管道。Spring Data MongoDB 也提供了对聚合管道的支持,但这不是通过 Criteria
类来实现的。相反,你可以使用 Aggregation
类来构建聚合查询。