// 返回的字段
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);
Aggregation agg = newAggregation(
group("author").count().as("count").first("author").as("name"),
project("name","count"),
sort(Direction.DESC, "count"),
match(Criteria.where("count").gt(0))
);
AggregationResults<ArticleResult> results = mongoTemplate.aggregate(agg, "article_info", ArticleResult.class);
List<ArticleResult> tagCount = results.getMappedResults();
for (ArticleResult studentResult : tagCount) {
System.out.println(studentResult.getName() + "\t" + studentResult.getCount());
}
List<DBObject> pipeline = new ArrayList<DBObject>();
BasicDBObject group = new BasicDBObject();
group.put("$group", new BasicDBObject("_id","$author")
.append("count", new BasicDBObject("$sum",1))
.append("name", new BasicDBObject("$first","$author")));
BasicDBObject project = new BasicDBObject();
project.put("$project", new BasicDBObject("name",1)
.append("count", 1).append("_id", 0));
pipeline.add(group);
pipeline.add(project);
AggregationOutput output = mongoTemplate.getCollection("article_info").aggregate(pipeline);
Iterable<DBObject> iterable = output.results();
for (DBObject dbObject : iterable) {
System.out.println(dbObject);
}