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);
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); }