Aggregation聚合查询2 group中的push的用法

group中的push的使用

伤情最是晚凉天,憔悴厮人不堪言,吆酒催肠三杯醉,寻香惊梦五更寒,
钗头凤斜倾有泪,徒迷花寥我无缘,小楼寂寞心与月,也难如钩也难圆!
大将生来胆气豪,腰横秋水雁翎刀,风吹橐鼓山河动,电闪旌旗日月高,
天上麒麟原有种,穴中蝼蚁岂能逃,太平待到归来日,朕与将军解战袍。

上次写了一篇对Aggregation聚合查询聚合查询的使用,有人对我提了group中的push的用法,因为之前也没有用过,通过翻看文档得到了如下的理解,不知道对不对,望共同进步
我早查询官方文档时的到了如下的结果

image.png

官方文档中有如下的解释:在结果文档中插入值到一个数组中。于是我猜想应该是在mongo数据库中有一个字段是一个集和,如果想要取到这个结合必然是要用到push这个方法。于是我在实体中加入了如下字段:

image.png

并且在数据库中填写了相对这个字段的数据如下:

image.png

写出了如下的聚合代码

//数据分组
    private List<Document> statisticsGroup(String dataSetId ,int year) {
        Criteria criteria = Criteria.where("dataSetId").is(dataSetId);
        criteria.and("year").is(year);
        Aggregation agg = Aggregation.newAggregation(
                Aggregation.match(criteria),
                Aggregation.group("month")
                        .first("month").as("month")
                        .count()
                        .as("monthCount")
                        .first("dataSetId").as("dataSetId")
                        .sum("clicks")
                        .as("sumClicks")
                        .sum("downloads")
                        .as("sumDownloads")
                        .first("dataSetType").as("dataSetType")
                        .push("extMetadata").as("extMetadata")
                ,
                Aggregation.sort(Sort.by(new Sort.Order(Sort.Direction.ASC, "month")))
        );
        AggregationResults<Document> result = mongoTemplate.aggregate(agg,Statistics.class, Document.class);
        return result.getMappedResults();
    }

获取封装的数据代码如下:

 List<Map<String,Object>> extMetadata = (List<Map<String,Object>>)document.get("extMetadata");

这样就把List<Map<String,Object>>中的数据取了出来
作者理解push的使用是:如果数据库中有集合类型的字段就要通过push来获取。

想装个逼但是发现用first 和普通的document.get("extMetadata");就能获取集合,很难受白加班了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ——献给申花已解聘的球星卡希尔 跃入敌阵, 一剑封喉, 你是一位真正的剑侠。 你奔跑的姿势, 你跃起的身影, 诉说...
    老尤老阅读 1,781评论 0 1
  • 每个人都是多维模式,喝醉的时候,吸毒的时候,高潮的时候,坐牢的时候,当妈的时候……-懂懂
    内心很美的日记阅读 1,807评论 0 0
  • 一切如期望的那样的时候,在高兴之余,还有一点伤感。想过很多种离开这个单位的场景,真正要走的时候,看着几年内做的事情...
    乐CXF慧阅读 968评论 0 0