mongodb的聚合查询aggregate group count操作

首先来看 Mysql统计数据

SELECT
	a.entity_id,
	COUNT( DISTINCT a.train_user_node_id ) 
FROM
	t_train_user_node_study_detail a 
WHERE
	a.entity_id IN ( 1, 26 ) 
GROUP BY
	a.entity_id

在这里插入图片描述

用MongoDB的aggregate查询

db.train_user_node_study_detail.aggregate([
 {
  $match :{
   "entityId": {"$in":["1","26"]}
  }
 },
 {
  $group :{
   _id:{"entityId" : "$entityId", "trainUserNodeId" :"$trainUserNodeId"}
  }
 }
 ,
 {
  $group :{
   _id:{"entityId" : "$_id.entityId"},
   count :{"$sum":1}
  }
 }
])

在这里插入图片描述
java代码

 @Test
    public void aggregation1() {
        List<String> ids = new ArrayList<>();
        ids.add("1");
        ids.add("26");
        Criteria criteria = new Criteria();
        criteria.and("entityId").in(ids);
        String[] group1 = { "entityId", "trainUserNodeId" };
        Aggregation aggregation = Aggregation.newAggregation(Aggregation.match(criteria), Aggregation.group(group1),
                Aggregation.group("entityId").count().as("studNum"));
        AggregationResults<TrainUserNodeGroup> result = mongoTemplate.aggregate(aggregation, "train_user_node_study_detail",
                TrainUserNodeGroup.class);
        log.info("result is {}", result.getMappedResults());
    }
    @Setter
    @Getter
    public class Group2 extends BaseBean {

        private static final long serialVersionUID = 3924605590502137660L;

        private String id;

        private int sum;
    }

控制台打印的结果
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值