今天看啥
    热点:

      天发国际娱乐官网:第三是“华德福型”,不强调学术,注重孩子的创意和模仿,如扮演不同角色的游戏;学习内容包括园丁工作,家务等很多实际生活中的事情;教学中不鼓励使用玩具和电子媒体,教具多为生活用具;目的是培养孩子的感知和自我意识。

      MongoDB之aggregate聚合函数应用实例讲解,mongodbaggregate


      前言

      公司最近在使用MongoDB作为数据库存储,学习应用了MongoDB的使用。作为非关系性数据库的代表,主要是以文档格式存储的数据库,灵活的字段,收到很多开发人员的喜欢。

      本人在使用了一天的MongoDB后感觉确实很方便,程序中不用再去定义实体bean,字段灵活,可多可少。适合需要存储大量数,高并发,弱事务的互联网应用开发,开发方便。

      今天总结的是MongoDB之aggregate函数的应用,主要用于数据记录的分析,例如求和,求平均值,最大最小值,分页,排序等操作,方便了数据的查询统计。

      需求

      开发语言为java

      项目中需要统计文章的阅读次数,最大阅读时间,平均阅读时间等。

      数据库文档字段为:

      {
          "_id" : "1234567",
          "_class" : "com.opinion.bean.QqBean",
          "groupName" : "小学中群",
          "qqNumber" : 127,
          "qqContext" : "一句话",
          "period" : 0
      }
      {
          "_id" : "1234568",
          "_class" : "com.opinion.bean.QqBean",
          "groupName" : "高中群",
          "qqNumber" : 128,
          "qqContext" : "两句话",
          "period" : 1
      }
      {
          "_id" : "1234569",
          "_class" : "com.opinion.bean.QqBean",
          "groupName" : "大学群",
          "qqNumber" : 129,
          "qqContext" : "两句话",
          "period" : 1
      }

      应用:

      public ResultBean getArticleRecordT(){
              DBObject query=new BasicDBObject().append("_class","com.opinion.bean.QqBean");
              //根据文章id和群id查出该文章阅读量
              int readCount=MongoTemplet.getCollection("qqBean").find(query).count();
              //定义匹配函数使用$match
              DBObject match=new BasicDBObject().append("$match",query);
              //这里必须定义_id
              DBObject total=new BasicDBObject("_id","total");
              total.put("sum", new BasicDBObject("$sum","$qqNumber"));
              total.put("avg", new BasicDBObject("$avg","$qqNumber"));
              total.put("max", new BasicDBObject("$max","$qqNumber"));
              //定义统计函数使用$group
              DBObject groupFields = new BasicDBObject().append("$group",total);
              //aggregate参数是一系列条件
              AggregationOutput output=MongoTemplet.getCollection("qqBean").aggregate(match,groupFields);
              //返回是一个集合
              List iterator= (List) output.results();
              for (DBObject dbObject:iterator){
                  System.out.println(dbObject.get("sum"));
                  System.out.println(dbObject.get("avg"));
              }
              Map periodMap=new LinkedHashMap<>();
              int period;
              for (int i=0;i<=24;i=i+3){
                  query.put("period",i);
                  period=MongoTemplet.getCollection("qqBean").find(query).count();
                  periodMap.put("perid"+i,period);
              }
      
              Map map=new HashMap<>();
              map.put("qq","1111");
              map.put("periodMap",periodMap);
              return new ResultBean(map);
          }

      这样可以拿到统计总和,平均数,最大值都可以

      结果:

      这里写图片描述

      www.1click-soft.comtruehttp://www.1click-soft.com/DB2/1296462.htmlTechArticleMongoDB之aggregate聚合函数应用实例讲解,mongodbaggregate 前言 公司最近在使用MongoDB作为数据库存储,学习应用了MongoDB的使用。作为非关系性数...

      相关文章

      帮客评论

      视觉看点
      百度 360 搜狗