Java使用Spring提供的Spring-data-mongodb来进行操作Mongodb进行分组、统计等操作示例。
// 返回的字段
ProjectionOperation projectionOperation = Aggregation.project("user_isp_tag", "ad_title", "ad_id", "push_url", "clicksum");
// 日期条件
Criteria operator = Criteria.where("ad_id").ne("").andOperator(
Criteria.where("click_time").gte(startDate),
Criteria.where("click_time").lt(endDate)
);
MatchOperation matchOperation = Aggregation.match(operator);
// 分组操作,并对每个广告的总条数进行统计
GroupOperation groupOperation = Aggregation.group("ad_id", "ad_title").sum("clicknum").as("clicksum");
// 分页操作,控制分页从哪开始
SkipOperation skipOperation = Aggregation.skip(pageQuery.getPageQuery_start());
// 分页操作,控制分页取得记录数
LimitOperation limitOperation = Aggregation.limit(pageQuery.getPageQuery_pageSize());
// 组合条件
Aggregation aggregation = Aggregation.newAggregation(projectionOperation, matchOperation, groupOperation, skipOperation, limitOperation);
// 执行操作
AggregationResults<AddspAnalyse> aggregationResults = this.mongoTemplate.aggregate(aggregation, "collectionName", AddspAnalyse.class);