Spring data mongodb 聚合查询(aggregation) 之 group

插入数据:java

mongoTemplate.save(new Role("zhang1",5));
        mongoTemplate.save(new Role("zhang2",6));
        mongoTemplate.save(new Role("zhang3",12));
        mongoTemplate.save(new Role("zhang4",14));
        mongoTemplate.save(new Role("zhang5",23));
        mongoTemplate.save(new Role("zhang1",6));
        mongoTemplate.save(new Role("zhang5",24));

查询:app

TypedAggregation<Role> agg = Aggregation.newAggregation(Role.class,
                Aggregation.group("name").
                        sum("age").as("agesum").
                        first("age").as("agefirst").
                        addToSet("age").as("agess")
                );
        AggregationResults<Document> result = mongoTemplate.aggregate(agg,Document.class);
        result.getMappedResults().forEach(document -> System.out.println(document));

结果:code

Document{{_id=zhang1, agesum=11, agefirst=5, agess=[6, 5]}}
Document{{_id=zhang2, agesum=6, agefirst=6, agess=[6]}}
Document{{_id=zhang3, agesum=12, agefirst=12, agess=[12]}}
Document{{_id=zhang5, agesum=47, agefirst=23, agess=[24, 23]}}
Document{{_id=zhang4, agesum=14, agefirst=14, agess=[14]}}

注意:get

默认会把分组的字段放在_id 上io

 

注意:Document这个class是:class

import org.bson.Document;