Study - mongodb 之 聚合(2)

本文深入探讨MongoDB中的累加器操作符,包括求和($sum)、求均值($avg)、求首值($first)、求末值($last)、求最大值($max)及求最小值($min),并解析这些操作符如何在$group和$project阶段应用,以实现高效的数据聚合和分析。

累加器

累加器本来只能使用与 g r o u p 下 , 但 是 版 本 3.2 或 以 上 , 部 分 累 加 器 还 能 使 用 于 group下,但是版本3.2或以上,部分累加器还能使用于 group3.2使project

  • 当在$group中使用时,累加器是针对每个分组使用的
  • 当在$project中使用时,累加器则是针对每个字面量起作用
常用累加器
操作符简述
$sum求和操作符,v3.2+可以用于 g r o u p 或 是 group或是 groupproject
$avg求均值操作符,v3.2+可以用于 g r o u p 或 是 group或是 groupproject
$first用于返回分组的第一个值,只能用于$group
$last用于返回分组的最后一个值,只能用于$group
$max用于返回分组的最大值,v3.2+可以用于 g r o u p 或 是 group或是 groupproject
$min用于返回分组的最小值,v3.2+可以用于 g r o u p 或 是 group或是 groupproject
  • $sum 求和操作符

    • 使用:

      • $group下使用:

        { $sum: <expression> }

      • $project下使用:

        { $sum: <expression> }
        or
        { $sum: [<expression1>, <expression2> … ] }

    • eg

      • 获取每门课的总分
    • 说明:

      结果
      $sum : <field> }只含数字
      $sum : <field> }含数字和非数字
      $sum : <field> }非数字或不存在
  • $avg 求均值操作符

    • 使用:
      • $group下使用:
        { $avg: <expression> }
      • $project下使用:
        { $avg: <expression> }
        or
        { $avg: [<expression1>, <expression2> … ] }
    • eg
      • 获取每门课的平均分
  • $first 求第一值操作符

    • 使用:
      { $first: <expression>}
    • eg

  • $last 求最后值操作符

    • 使用:
      { $last: <expression> }
    • eg

  • $max 求最大值操作符

    • 使用:
      • $group下使用:

        { $max: <expression> }

      • $project下使用:

        { $max: <expression> }
        or
        { $max: [<expression1>, <expression2> … ] }

    • eg
      • 获取各科目的最高分
  • $min 求最小值操作符

    • 使用:
      • $group下使用:

        { $min: <expression> }

      • $project下使用:

        { $min: <expression> }
        or
        { $min: [<expression1>, <expression2> … ] }

    • eg
      • 获取各科目的最低分

表达式操作符

表达式操作符主要用于在管道中构建表达式时使用,使用类似于函数那样需要参数,主要用于$project操作符中,用于构建表达式

表达式操作符

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值