MongoDB 的 7 种聚合语法及使用

阅读时长 4 分钟读完

MongoDB 是一个开源的文档型 NoSQL 数据库,其中最常用的聚合操作能够完成多种复杂查询,同时还能按需将数据进行分组和统计等操作。本文将介绍 MongoDB 中常用的 7 种聚合语法,并提供详细的示例代码,帮助读者深入理解 MongoDB 的聚合操作。

1. $match

$match 根据指定条件从源数据集合中筛选出符合要求的文档。它类似于 SQL 中的 WHERE 语句,只不过 $match 是作为初始聚合管道阶段所使用的。

上述代码将从订单集合中查询符合以下两个条件的文档:

  • status 字段值为 pendingcompleted
  • date 字段值在 2021 年之间。

2. $group

$group 可以将数据集合中的文档按照指定的字段进行分组,并进行聚合计算操作,如求和、平均值等。下面的示例代码演示了如何将学生文档按班级进行分组,并统计每个班级的学生数和平均分数。

-- -------------------- ---- -------
-----------------------
    -
        ------- -
            ---- ---------
            ------ - ----- - --
            ---------- - ----- -------- -
        -
    -
---
展开代码

3. $project

$project 用于对文档进行投影或重构,类似于 SQL 中的 SELECT 语句。它可以在查询结果中仅包含需要的字段,并重命名字段名、计算新字段等操作。

-- -------------------- ---- -------
---------------------
    -
        --------- -
            ----- --
            ---- --
            ----- ---------------
        -
    -
---
展开代码

上述代码从 people 集合中获取所有文档,并仅保留 nameagecity 三个字段。其中 city 字段是从 address.city 中获取的。

4. $limit

$limit 用于限制聚合管道输出的文档数。它类似于 SQL 中的 LIMIT 语句。

上述代码表示仅从 customers 集合中获取前 10 个文档。

5. $skip

$skip 用于跳过指定数量的文档后再进行后续的处理。它也可以和 $limit 一起使用,实现分页查询操作。

上述代码表示先跳过前 50 个文档,然后获取接下来 10 个文档。

6. $sort

$sort 用于对聚合管道输出的文档进行排序。

上述代码表示将 sales 集合中的文档按 revenue 字段进行降序排序。

7. $unwind

$unwind 将文档中的数组字段拆分成多个文档,类似于 SQL 中的 JOIN 操作。

上述代码表示将 books 集合中的 authors 数组字段拆分成多个文档,并将它们按作者统计作品数量。

结束语

上述 7 种聚合语法是 MongoDB 中常用的操作,掌握它们将大大提高开发效率和查询灵活性。同时,建议读者加强自己的编程实践,不断优化自己的代码,以更好地使用 MongoDB 聚合操作。

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

纠错
反馈

纠错反馈