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

2021-02-01 10:34:12 浏览数 (1)

参考链接: Java中的聚合

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

@Override

public List<ApplicationDTO> getAppInfoByAppNames(List<String> 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<ApplicationDTO> groupResults

            = mongoTemplate.aggregate(aggregation, Review.class, ApplicationDTO.class);

    return groupResults.getMappedResults();

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

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

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

0 人点赞