java springboot + mongo进行Aggregation聚合查询

Aggregation:

参数说明:sql(Operators)

     where ($match) 、group by ($group) 、having($match)、select($project)、order by($sort)、limit($limit)

     sum($sum)、count($sum)、join($lookup)

/*

 * project:列出所有本次查询的字段,包括查询条件的字段和需要搜索的字段;

 * match:搜索条件criteria

 * unwind:某一个字段是集合,将该字段分解成数组

 * group:分组的字段,以及聚合相关查询

 *      sum:求和(同sql查询)

 *      count:数量(同sql查询)

 *      as:别名(同sql查询)

 *      addToSet:将符合的字段值添加到一个集合或数组中

 * sort:排序

 * skip&limit:分页查询

 */

    public List<MongoUser> findMongo(PageableVo<RequestVo, User> user){
        Criteria age = Criteria.where("age").is(user.getContent().get(0).getAge());
        int offset = user.getPage() * user.getPageSize();
        int limit = user.getPageSize();

        TypedAggregation<MongoUser> mongoUserTypedAggregation = Aggregation.newAggregation(MongoUser.class,
                Aggregation.project("id", "name", "age"),
                Aggregation.skip(offset),
                Aggregation.match(age),
                Aggregation.limit(limit));
        AggregationResults<MongoUser> aggregate = mongoTemplate.aggregate(mongoUserTypedAggregation, MongoUser.class);
        List<MongoUser> mongoUsers = new ArrayList<>();
        for (MongoUser mongoUser : aggregate) {
            mongoUsers.add(mongoUser);
        }
        return mongoUsers;
    }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值