java mongodb 聚合操作group的使用方式

Java Code Examples for org.springframework.data.mongodb.core.aggregation.Aggregation

@Override
public List getAppInfoByAppNames(List names) {

    Aggregation aggregation = newAggregation(
        match(Criteria.where("appname").in(names).and("timestamp").exists(true)),
        sort(new Sort(DESC, "timestamp")),
        project("appname", "platform", "starrating",
                    "timestamp", "comment", "authorName","url"),
        group("appname", "platform")
            .push(new BasicDBObject("author", "$authorName")
                .append("rate", "$starrating" )
                .append("timestamp", "$timestamp")
                .append("comment", "$comment")
                .append("url", "$url")
            ).as("reviews"),
        project("appname", "platform")
            .and("reviews").slice(8, 0)
    );

    //Convert the aggregation result into a List
    AggregationResults groupResults
            = mongoTemplate.aggregate(aggregation, Review.class, ApplicationDTO.class);

    return groupResults.getMappedResults();
}

在mongodb聚合操作的时候我们一般是通过一个字段或者多个字段作为聚合条件来完成的,

如上面的例子就是首先match作为想要聚合的范围,sort排序,group就是聚合的条件(上面的例子的统计条件是appname和platform)。

此外也可以使用push、first等来将合并的数据的其它字段显示出来,跟mongodb自带的聚合方式区别不大。

你可能感兴趣的:(java,mongodb)