mongo的分组求和目录

  • 1、mongo脚本语句的分组求和
  • 2、java中的spring-data-mongodb分组求和

1、mongo脚本语句的分组求和

mongo文档集合结构:

脚本如下:

 db.getCollection("StatisticalEmployees").aggregate([{$match: {'org_id': "a024db93c3b311e9a9bc98039b473960",'status': 0,'date': {$gte: ISODate("2019-07-01 00:00:00"),$lt: ISODate("2019-08-01 00:00:00")} }}, {$group: {"_id": {"org_id": "$_id.org_id","date": "$_id.date"},"total": {"$sum": "$fans_number"}}}, {$project: {"_id": 0,"total": 1}}])

解读:
     (1)match:查询的筛选条件
     (2)group:
         1)_id:分组的字段
         2)total:所要取的聚合函数
             [1] $sum:表示求和的聚合函数
     (3)project:查询后的显示字段,0:表示不显示;1:表示显示

2、java中的spring-data-mongodb分组求和

注意点:
     (1)0要使用该管道方法,spring-data-mongodb 必须1.10.10 版本以上
     (2)mongo数据库存储的是文档,就像java的.class文件;故而建议字段多单词时,使用驼峰命名
     (3)在此方法中,需特别注意的是字段映射问题,建议 java对象和mongo数据库 使用驼峰命名法(以避免映射问题)

   结果如下:

解读:
     (1)Aggregation.match(Criteria语句):存放的是条件,类似于MySQL中的where语句
     (2)Aggregation.group(String… key):参数表示 可变多参数 ,指的是分组参数或分组多参数
     (3)Aggregation.group(String… key).sum(字段名).as(别名):如同MySQL中的聚合函数与别名,需要 一起使用
     (4)Aggregation.group(String… key):与MySQL相同, 如果不是分组参数,在查询的字段中就一定要是聚合函数;否则报错 。亦可 将其余要的字段当做分组参数 (即多分组参数)
     (5)Aggregation.project(String… 别名):可变多参数,将 group方法里的聚合函数别名 放于此,表明查询出所要的聚合函数

注意: 在mongo中,分组求和时,会将 分组参数的值赋给mongo数据库自动生成的_id字段 ,表示 唯一值
     (1)如果直接使用Aggregation.project(String key, String… 别名)的形式,实际上的 key值会在_id字段 ,而 key字段为null
     (2)Aggregation.project(String… 别名).and(String 别名).previousOperation():表示 将_id字段的值赋给前面and()中的别名
     (3)一旦 分组参数有多个 ,_id 将会采用 json的格式包含多个 参数字段;故而使用第二点时,and()中的 别名也将会是json格式 (多个参数字段);如: and()中的别名 = _id = {key1: “key1”, key2: “key2”}
     (4)Aggregation.project(String… 别名).andInclude(String key1).andInclude(String key2):表示查询出所要的分组参数(其中的 key1、key2应当是group() 中的分组字段);实际上就是 相当于 key1 = _id.key1 = “key1”;key2 = _id.key2 = "key2"

mongodb的分组求和(使用aggregate方法)相关推荐

  1. linq 分组求和的一般方法

    //var query = from d in expenseApplyModel.ApplyBillList.AsEnumerable() // group d by d.ExpenseItemID ...

  2. Python之数据聚合——aggregate()方法

    文章目录 使用内置统计方法聚合数据 面向列的聚合方法 aggregate()方法 对每一列数据应用同一个函数 对某列数据应用不同的函数 对不同列数据应用不同函数 使用内置统计方法聚合数据 实现数据拆分 ...

  3. 对对象数组进行分组的最有效方法

    本文翻译自:Most efficient method to groupby on an array of objects What is the most efficient way to grou ...

  4. MongoDB sql分组查询,以及Java操作MongoDB分组查询

    一.MongoDB SQL 1.使用group方法分组(写法一) select c_sender,c_sendtime,total,dep_ids,avg from goods_order group ...

  5. java steam 排序_java8 stream自定义分组求和并排序的实现

    本文主要介绍了java8 stream自定义分组求和并排序的实现,分享给大家,具体如下: public static void main(String[] args) { List list = ne ...

  6. Linq专题之提高编码效率—— 第一篇 Aggregate方法

    我们知道linq是一个很古老的东西,大家也知道,自从用了linq,我们的foreach少了很多,但有一个现实就是我们在实际应用中使用到的却是屈指可数 的几个方法,这个系列我会带领大家看遍linq,好的 ...

  7. c语言分组求和函数,R语言 实现data.frame 分组计数、求和等

    df为1个data.frame对象,有stratum和psu两列,这里统计stratum列计数 方法1: cnt = table(df$stratum) 方法2: cnt = tapply(df$ps ...

  8. C语言指针年龄段分组,[问题]数字分组求和,当和最大的组与和最小的组差最小时,输出...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 经过一个月的学习.我想出来了一种算法,各位高手指点 我是楼主 #include int arrgroup[11]={0}; /*表示分组情况的数组*/ i ...

  9. Java 8中 直接通过List进行分组求和

    // Java8 中 List.stream的分组求和方法Map<String, Long> map = list.stream().collect(Collectors.grouping ...

最新文章

  1. 项目2---机柜和物理服务器
  2. node.js 没有转发_如何用Nodejs编写一个定时消息提醒应用?
  3. SET_TABLE_FOR_FIRST_DISPLAY 参数 I_SAVE
  4. TCP的ACK确认系列 — 快速确认
  5. 震惊!递推与递归竟然可以这么编!%99的程序员都不知道!
  6. 亿佰特物联网通信专家:蓝牙模块和 Zigbee协议模块的区别
  7. 网络IPC非阻塞和异步I/O
  8. 信息学奥赛一本通(1398:短信计费)
  9. Repeater绑定ArrayList数据源
  10. ftk学习记(输入法篇)
  11. zabbix_server执行window脚本出现中文乱码如何解决
  12. linux下的5个查找命令
  13. 基于STC89C52的小车制作上篇,用电机将小车驱动起来之对L298N逻辑输入N1~N4详解
  14. php使用获取mysqlerror时报错Call to undefined function mysql_error()
  15. 淘宝补单的一些见解和经验分享,仅供参考
  16. 实现计算机联网的最大好处是,职.称计算机考试多项选择题考试卷模拟考试题...
  17. 微信小程序合成二维码海报
  18. 学会用打码平台处理验证码
  19. APMServ 5.2.6虚拟主机配置bug
  20. 关于UITableView的Cell复用谈谈我的一些心得滴水穿石

热门文章

  1. 教你学会u盘重装win10系统,u盘系统盘安装win10
  2. 工作一周随笔记———一个即将踏入编程的少年
  3. 《提问的智慧》 - 懒人的脑图
  4. php fpm 测试,PHP脚本FPM环境最大执行时间研究
  5. 上海电信大数据平台:实现客户的私人订制
  6. Python代码写好了怎么运行?
  7. qcustomplot圆_Qt之QCustomPlot(图形库)
  8. HTML网页设计期末课程大作业~仿腾讯游戏官网设计与实现(HTML+CSS+JavaScript)
  9. 计算机相关美文摘抄,半途而废的人生很美美文摘抄
  10. Learning to Track at 100 FPS with Deep Regression Networks全文翻译