一、对字段(protocol)下的不同类型进行分组统计:
db.getCollection('xxx').aggregate([
    { "$group": {
        "_id": {
            "protocol": "$protocol"
        },
        "protocolCount": { "$sum": 1 }
    }}
])

db.getCollection('bp0501_dev').aggregate([
    { "$group": {
        "_id": "$protocol",
        "protocolCount": { "$sum": 1 }
    }}
])

加过滤:
db.getCollection('bp0501_dev').aggregate([
    {"$match":{"userid":"bbdz"}},
    { "$group": {
        "_id": "$protocol",
        "protocolCount": { "$sum": 1 }
    }}
])

对应的mongodbTemplate写法:

field是要统计的字段名(对应上边的protocol字段,protocolCount是统计名称),tbName是对应的表名("xxx")

----都是String类型

Aggregation agg = Aggregation.newAggregation(Aggregation.group(field).count().as("sum")
);
AggregationResults results = ppmongoTemplate.aggregate(agg,tbName, BasicDBObject.class);
List list = results.getMappedResults();

二、统计userid(字段,类型是数组)内相同数据出现的次数:
db.getCollection('xxx').aggregate( [ 
   {$unwind:"$userid"},
   {$group:{_id:"$userid",count:{$sum:1}}},
   {$project:{_id:0,count:1,userid:"$_id"}} 
])

加分页:
db.getCollection('bp0501_dev').aggregate( [ 
   {$unwind:"$userid"},
   {$group:{_id:"$userid",count:{$sum:1}}},
   {$project:{_id:0,count:1,userid:"$_id"}},
   {$skip:0},
   {$limit:5}
])

对应的mongodbTemplate写法:

Aggregation agg = Aggregation.newAggregation(Aggregation.unwind(field),Aggregation.group(field).count().as("sum")
);

注:默认会把分组的字段放在_id 上,(这里_id:0)去掉(及修改)_id字段名为userid,  查询出来的统计字段是sum,而count:1是修改名字sum为count

{$unwind:"$userid"}   //分解userid这个数组

{$project:{_id:0,count:1,userid:"$_id"}}    //这句小编还不知怎么写

详细请看下面的链接

如:

1、修改前

[

{
        "_id": "5ce745712bd4f9d6f374e620",
        "sum": 5
    }

]

2、修改后

[

{
      "count" : 5.0,
      "userid" : "5ce745712bd4f9d6f374e620"
  }
]

由于表数据不能复制和转载,在这里直接分享博主的连接,大家自己看吧,这里只做分享:

原文来自:https://blog.csdn.net/weixin_43678764/article/details/85262969

https://blog.csdn.net/ruoguan_jishou/article/details/79289369

MongoDB统计文档(Document)的数组(Array)中的各个元素出现的次数:

https://www.cnblogs.com/hapjin/p/7944404.html

mongodb分组统计相关推荐

  1. MongoDB 分组统计

    [摘要] MongoDB 在进行分组统计时如果面对一些比较复杂的计算情况,往往会遇到 shell 脚本过于复杂的问题.而集算器 SPL 语言,则因其有丰富的函数库及易用性恰好能弥补 Mongo 这方面 ...

  2. java 对 mongoDB 分组统计操作 以及一些常用操作

    为什么80%的码农都做不了架构师?>>>    /*** * 功能描述:* * @author :xiaoyu 创建日期 :2014年2月19日 下午2:23:44* * @para ...

  3. mongodb按照时间分组统计

    使用spring data mongodb v1.8 需求1. 数据结构如下.说明:改集合记录的是公司各个系统的访问情况(localPath表示系统,requestTime 表示请求时间,字符串类型, ...

  4. mongodb aggregate按日期分组统计及spring mongo实现

    如需转载请注明出处: mongodb aggregate按日期分组统计及spring mongo实现 实现的需求 传入毫秒级开始时间戳和结束的时间戳,根据当前状态currentStatus.statu ...

  5. MongoDb数组操作 - unwind解包、group分组统计、sort排序

    MongoDB统计文档(Document)的数组(Array)中的各个元素出现的次数 一,问题描述 [使用 unwind 操作符 "解包" Document 里面的Array中的每 ...

  6. java mongo分组统计_mongodb 分组 topN

    [摘要] MongoDB 对于 TopN 功能的需求使用其 shell 脚本来实现有些复杂,而集算器 SPL 语言,则因其离散性.灵活性恰好能弥补 MongoDB 实现方面的不足.若想了解更多,请前往 ...

  7. sql server 经典SQL——分组统计

    一.分组统计 数据 name dtdate result aa 2017-01-04 1 aa 2017-01-04 1 aa 2017-01-05 1 aa 2017-01-05 0 bb 2017 ...

  8. pandas使用groupby函数对dataframe进行分组统计、使用as_index参数设置分组聚合的结果中分组变量不是dataframe的索引(index)

    pandas使用groupby函数对dataframe进行分组统计.使用as_index参数设置分组聚合的结果中分组变量不是dataframe的索引(index) 目录

  9. R语言进行数据聚合统计(Aggregating transforms)计算滑动窗口统计值(Window Statistics):使用R原生方法、data.table、dplyr等方案、计算滑动分组统计

    R语言进行数据聚合统计(Aggregating transforms)计算滑动窗口统计值(Window Statistics):使用R原生方法.data.table.dplyr等方案.计算滑动分组统计 ...

  10. Elasticsearch Aggregation 多个字段分组统计 Java API实现

    2019独角兽企业重金招聘Python工程师标准>>> 现有索引数据: index:school type:student ----------------------------- ...

最新文章

  1. 如何修改Sql2005注册服务器名称 {转载}
  2. python 数组队列
  3. GitHub下载某分支的代码
  4. mysql的优化总结
  5. jieba结巴分词--关键词抽取_初学者 | 知否?知否?一文学会Jieba使用方法
  6. JAVA共通関数--システム時刻を取得する(1)
  7. 教育计算机缩写,{教育管理}计算机缩写术语完全介绍宝典.docx
  8. 什么是 Power BI?
  9. [C语言]二维数组传参的格式(详细+总结)
  10. 新高考十二种选科情况下,再选科目的考室安排的探索2.0版
  11. 使用OSM通过ArcGis显示城市线路地图
  12. LeetCode/LintCode 题解丨一周爆刷字符串:乱序字符串
  13. 18种为你的网站引流的好方法
  14. oracle中英文文献,库存管理外文文献及中英文翻译.doc
  15. Windows 10 Edt LTSC中文系统安装教程
  16. 请求服务接口提示访问被拒绝
  17. MHz 和 Mbps的区别
  18. 迅为4418开发板邮票孔与连接器版本区别
  19. 去中心化的前端构建工具 — Vite
  20. Google Ananlytics 与百度统计

热门文章

  1. 使用PicGo和阿里云OSS建立云图床
  2. 关于修改双系统默认启动项设置
  3. 一:使用FreeIPA安装Kerberos和LDAP( IPA-Client安装)
  4. Visual Studio Code (VS Code)安装教程(配图超详细)
  5. 计算机硬盘的文件怎么删除文件,电脑硬盘删除文件怎么恢复
  6. lintcode刷题——罗马数字转整数
  7. VirtualBox运行出现“0x00000000指令引用的0x00000000内存。该内存不能为written”
  8. 【第二周】吴恩达团队AI for Medical Diagnosis课程笔记
  9. 科来kelai工具的安装与使用-改包回放包工具
  10. 帮助用户连接网络打印机工具