zoukankan      html  css  js  c++  java
  • mongodb mongotemplate聚合

    1.group by并且计算总数

      @Test
        public void insertTest() {
            //测试数据
            //insertTestData();
            Aggregation agg = Aggregation.newAggregation(
                    //Aggregation.match(Criteria.where("groupId").is(5)),
                    Aggregation.group("groupId").count().as("total"), 
                    Aggregation.project("total").and("groupId").previousOperation(),            
                    Aggregation.sort(Sort.DEFAULT_DIRECTION, "total"));
            List<StaCount> list = mongoTemplate.aggregate(agg, "currentUser", StaCount.class).getMappedResults();
            for(StaCount count : list) {
                System.out.println(count.getGroupId() + ":" + count.getTotal());
            }
      }
    如果要带其他字段,将红字变为
    Aggregation.group("groupId","groupName"...),并将project的and部分去掉即可;
    
    

     2.Crieria的使用,注意andOperator和orOperator的用法

    Aggregation agg = Aggregation.newAggregation(

        Aggregation.match(new Criteria()

                .andOperator(Criteria.where("onlineTime").gt(new Date()))

                .orOperator( Criteria.where("offlineTime").gt(new Date())

        ,Criteria.where("offlineTime").exists(false) ))

     3.Query的排序和分页

    Query query = new Query(Criteria.where(ReportField.GROUP_ID).in(groupIdList));
            query.with(new Sort(Direction.DESC, ReportField.ID));
            query.skip(lastId).limit(limit);
  • 相关阅读:
    Git 分支管理
    Kubernetes 中文文档
    Docker 命令大全
    Redis 常用命令 大全
    Docker 资源汇总
    Docker 安装 Redis
    JavaScript闭包
    CSS选择器
    JavaScript类型转换
    javascript字符串处理方法
  • 原文地址:https://www.cnblogs.com/guochunyi/p/5315943.html
Copyright © 2011-2022 走看看