实现步骤:
1:导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>自定义版本号</version>
</dependency>
2:业务层自动装配MongoTemplate对象
@Resource
private MongoTemplate mongoTemplate;
3:功能实现
//查询条件的集合(用来存储查询的所有条件)
List<AggregationOperation> operations = new ArrayList<>();
//查询commentBlogId列为“123123”并且commentLevelStatus列为“1”的数据
Criteria criteria = Criteria.where("commentBlogId").is("123123").where("commentLevelStatus").is(1);
operations.add(Aggregation.match(criteria));
//根据commentCreateTime降序查询
operations.add(Aggregation.sort(Sort.Direction.DESC,"commentCreateTime"));
//分页查询(使用skip 跳过数据,如果数据量庞大则影响性能问题)
operations.add(Aggregation.skip( (queryAllComment.getPageNo() -1 ) * queryAllComment.getPageSize()));//设置从哪条数据开始查询(即设置页码)
operations.add(Aggregation.limit(queryAllComment.getPageSize()));//设置每页显示条数
Aggregation aggregation = Aggregation.newAggregation(operations);
//将上面的查询条件进行填充并执行
//下面三个参数分别为:自己创建的查询条件,mongoDB中被查询集合的名称,结果集被自动装配的类。
//最终得到结果集:results
AggregationResults<Comment> results = mongoTemplate.aggregate(aggregation, "comment", Comment.class);
if(ObjectUtil.isEmpty(results)){
return null;
}
//数据被存放在results.getMappedResults()里面
return RestResponse.success(results.getMappedResults());