当前播放: 08 | 聚合查询
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:MongoDB再入门 (12讲)
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 认识文档数据库MongoDB
免费
04 | MongoDB特色及优势
免费
05 | 实验:安装MongoDB
免费
06 | MongoDB基本操作
07 | 实验:Hello World程序开发
08 | 聚合查询
09 | 实验:聚合查询
10 | 复制集机制及原理
11 | 实验:搭建MongoDB复制集
12 | MongoDB全家桶
第二章:从熟练到精通的开发之路 (12讲)
13 | 模型设计基础
14 | JSON文档模型设计特点
15 | 文档模型设计之一:基础设计
16 | 文档模型设计之二:工况细化
17 | 文档模型设计之三:模式套用
18 | 设计模式集锦
19 | 事务开发:写操作事务
20 | 事务开发:读操作事务之一
21 | 事务开发:读操作事务之二
22 | 事务开发:多文档事务
23 | Change Stream
24 | MongoDB开发最佳实践
08 | 聚合查询

08 | 聚合查询

唐建法(TJ)
Tapdata CTO、MongoDB中文社区主席、前MongoDB大中华区首席架构师
47讲 约500分钟3451
单独订阅¥129
2人成团¥99
2
登录 后留言

精选留言(13)

  • 蒋腾飞同学
    感觉python和mongodb很像,语法简洁~没有规则就是最好的规则?
    2019-11-13
    2
  • 旺旺
    MongoDB的聚合功能真强大啊,真的是不知道。
    不过想请教老师,MongoDB的这种聚合功能,对数据量很大的时候,性能会不会很差,仍然有很好的性能表现吗?毕竟是json格式的,在聚合的时候,效率会不会很差啊
    2019-11-13
    3
    2
  • fedwing
    请教下老师,后续会讲到mongo的同步,异步流程吗?还有是不是可以结合CURD或者其它指令来结合下源码介绍下mongo的工作流程!直接看源码,目前有点吃力,看的时候很多也不是很了解,或者老师有没有其它的资料可以帮助理解源码的!
    感谢😊
    2019-11-14
    1
    1
  • JAJAJA
    及时雨,Mongo聚合操作对我的网关流量统计需求的实现大有裨益。
    2019-11-13
    1
    1
  • YoKate
    这个:

    db.user.aggregate([
    {
      $match:{gender: '女'}
    } , {
      $group: {
       _id:"$DEPARTMENT',
       emp_qty:{$sum:1}
    }, {
     $match: {
      emp_qty: {$lte: 10}
    }
    }])

    是不是寻找部门女员工数量少于 10 的部门?

    作者回复: 对的。 $lte: 小于等于。所以是女员工数量等于或少于10的部门

    2019-12-19
  • cording
    老师,请教一下如果单表数据量有3亿,进行聚合统计比如count,效率怎么样?

    作者回复: 如果是无条件全表count,这个很快因为是实时计数的。

    带条件count取决于:1) 是否用到索引 2)你的数据是否都在内存 3)你的存储IO是否够快 - SSD vs SAS vs SATA 有很大差别

    通常来说这种操作会需要几十秒到分钟级如果没有优化。

    2019-12-17
  • 小氘
    管道和步骤让我想到了java中的Stream类,有中间操作和终端操作,Stream类就是想在java中实现数据库的聚合操作。
    2019-12-14
  • 丁丁历险记
    好奇一件事情,单表查询的话,为啥不直接支持下sql

    作者回复: MongoDB企业版中有支持SQL方式查询的工具。

    2019-12-11
  • 长期规划
    聚合功能很强大,可以用Pipeline实现很复杂功能,比SQL厉害
    2019-12-03
  • cliff
    老大有没有类似sumif的聚合

    作者回复: 没有sumif这个keyword,但是可以实现类似的事情,下面这个例子是只把>=10 的$a字段的值相加求和:

    db.collection.aggregate([{
      $group: {
        _id: null,
        total: {
          $sum: {
            $cond: [{ $gte: ["$a", 10] },
              "$a",
              0
            ]
          }
        }
      }
    }])

    2019-11-27
    3
  • 老师能不能再讲讲第二个例子两个match的区别?另外emp_qty的sum设为1,是说要做sum操作,还是每次增加1?如果设为2那统计出来的是人数的两倍吗?

    作者回复: 第一个match是过滤原始集合的数据。第二个是针对group之后的结果再次过滤掉员工数量大于等于10的,只保留小于10个员工的部门。 第二个match没法放到前面,因为emp_qty在原始集合里不存在,必须等group之后才可以。


    emp_qty: {$sum: 1}的意思是对group里面的每一条数据,值加1。 如果加2,自然结果就是两倍

    2019-11-27
    1
  • 为什么在project里面,first_name前要加美元符号,在一般find里面不需要加?

    作者回复: first_name要加美元符号,可以理解那是个变量, 实际的值要通过替换 first_name在文档中的具体值。

    find()操作里面的用到的first_name只是个key。

    2019-11-27
    1
  • 石头
    比sql语句复杂
    2019-11-15
收起评论
看过的人还看
MySQL实战45讲

林晓斌  网名丁奇,前阿里资深技术专家

48讲 | 43741 人已学习

拼团 ¥69 原价 ¥99
Elasticsearch核心技术与实战

阮一鸣  eBay Pronto平台技术负责人

100讲 | 16796 人已学习

拼团 ¥89 原价 ¥129
设计模式之美

王争  前Google工程师,《数据结构与算法之美》专栏作者

100讲 | 18080 人已学习

拼团 ¥129 原价 ¥199
后端技术面试38讲

李智慧  同程艺龙交通首席架构师,前Intel&阿里架构师,《大型网站技术架构》作者

38讲 | 3711 人已学习

拼团 ¥79 原价 ¥99