方式1
List<AggregationOperation> operations = new ArrayList<>();
operations.add(Aggregation.match(Criteria.where("created_at").gte(begin).lte(end)));
operations.add(Aggregation.match(Criteria.where("deleted_at").isNull()));
operations.add(Aggregation.group("user_id").count().as("total"));
Aggregation agg = Aggregation.newAggregation(operations);
AggregationResults<TotalDto> result = mongoTemplate.aggregate(agg, "cycling", TotalDto.class);
var count = result.getMappedResults().size();
return (long) count;
方式2
List<AggregationOperation> operations = new ArrayList<>();
operations.add(Aggregation.match(Criteria.where("created_at").gte(begin).lte(end)));
operations.add(Aggregation.match(Criteria.where("deleted_at").isNull()));
operations.add(Aggregation.group("user_id"));
operations.add(Aggregation.count().as("total"));
Aggregation agg = Aggregation.newAggregation(operations);
TotalDto dto = mongoTemplate.aggregate(agg, "cycling", TotalDto.class).getUniqueMappedResult();
if (Objects.nonNull(dto)) {
return dto.getTotal();
}
return 0L;
标签:operations,count,distinct,mongodb,Aggregation,add,Criteria,计数问题,match
From: https://www.cnblogs.com/qiudaozhang/p/17248341.html