Mongoose 之如何使用 $group 操作符进行分组统计

阅读时长 5 分钟读完

在 MongoDB 中,使用 $group 操作符可以实现对数据进行分组统计的功能。在 Mongoose 中,也提供了 $group 操作符的支持,可以方便地进行数据分组统计。

$group 操作符的语法

在 Mongoose 中,使用 $group 操作符的语法如下:

其中:

  • _id:分组的依据,可以是一个字段,也可以是一个表达式。如果是一个字段,系统会按该字段的值进行分组;如果是一个表达式,系统会按照表达式的计算结果进行分组。可以使用任何有效的表达式,包括算术运算符、逻辑运算符和比较运算符等。

  • <field>:每个属性都是一个计算后的值。可以使用 MongoDB 的累加器操作来计算这些值,例如 $sum、$avg、$min、$max、$first 和 $last 等。

  • <expression>:每个属性都是使用聚合表达式计算出的值,这些值可以由 MongoDB 的表达式来计算,例如 $sum、$avg、$min、$max、$first 和 $last 等。

$group 操作符的示例

下面我们通过一个实际的例子来演示如何使用 $group 操作符进行分组统计。

准备数据

假设我们有一个用户注册信息的集合,包含了每个用户的姓名、年龄、邮箱地址、注册时间等信息。

我们向集合中插入一些示例数据:

统计每个年龄段的用户数量

现在我们要统计每个年龄段的用户数量,可以使用以下代码:

-- -------------------- ---- -------
----- ------ - ----- ----------------
  -
    ------- -
      ---- -
        -------- -
          --------- -
            - ----- - ---- -------- --- -- ----- ------- --
            - ----- - ---- -------- --- -- ----- --------- --
            - ----- - ---- -------- --- -- ----- --------- -
          --
          -------- --------
        -
      --
      ------ - ----- - -
    -
  -
---

--------------------

这段代码首先通过 $switch 表达式将每个用户按照年龄分为不同的年龄段。然后使用 $group 操作符对每个年龄段的用户进行分组,并通过 $sum 累加器计算出每个组中用户的数量。最终得到以下输出结果:

统计每个年龄段的用户数量和平均年龄

我们还可以使用 $group 操作符来同时统计每个年龄段的用户数量和平均年龄,可以使用以下代码:

-- -------------------- ---- -------
----- ------ - ----- ----------------
  -
    ------- -
      ---- -
        -------- -
          --------- -
            - ----- - ---- -------- --- -- ----- ------- --
            - ----- - ---- -------- --- -- ----- --------- --
            - ----- - ---- -------- --- -- ----- --------- -
          --
          -------- --------
        -
      --
      ------ - ----- - --
      ------- - ----- ------ -
    -
  -
---

--------------------

这里增加了一个 avgAge 属性,将平均年龄也纳入了统计范畴,最终得到以下输出结果:

总结

$group 操作符是 MongoDB 中用于实现数据分组统计的关键操作符之一,也是 Mongoose 中的核心操作符之一。通过合理地使用 $group 操作符,可以轻松实现对数据的分组统计,为数据分析和业务决策提供有力的支持。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e02c38f6b2d6eab3b410bc

纠错
反馈