MongoDB聚合查询


MongoDB 聚合查询

一、什么是 MongoDB 聚合框架

  • MongoDB 聚合框架(Aggregation Framework)是一个计算框架,它可以:
    • 作用在一个或几个集合上;
    • 对集合中的数据进行一系列运算;
    • 将这些数据转化为期望的形式;
  • 从效果而言,聚合框架相当于 SQL 查询中的:
    • GROUP BY
    • LEFT OUTER JOIN
    • AS 等

二、管道(Pipeline)和步骤(Stage)

  • 整个聚合计算过程称为管道(Pipeline),它由多个步骤(Stage)组成,每个管道:
    • 接受一系列文档(原始数据)
    • 每个步骤对这些文档进行一系列运算
    • 结果文档输出给下一个步骤

image.png

三、聚合运算基本格式

pipeline = [$stage1, $stage2, ..., $stageN];
db..aggregate(
    pipeline,
  { options }
);

四、常见步骤

步骤 作用 SQL 等价运算符
$match 过滤 WHERE
$project 投影 AS
$sort 排序 ORDER BY
$group 分组 GROUP BY
$skip/$limit 结果限制 SKIP/LIMIT
$lookup 左外连接 LEFT OUTER JOIN
$unwind 展开数组 N/A
$graphLookup 图搜索 N/A
$facet/$buket 分片搜索 N/A

五、聚合运算的使用场景

  • 聚合查询可以用于 OLAP 和 OLTP 场景。例如:
    OLTP OLAP
    计算 分析一段时间内的销售总额、均值
    计算一段时间内的净利润
    分析购买人的年龄分布
    分析学生成绩分布
    统计员工绩效

六、MQL 常用步骤与 SQL 对比

  • SQL
SELECT
    FIRST_ NAME AS ``,
    LAST_ NAME AS ``
FROM Users
WHERE GENDER = '男'
SKIP 100
LIMIT 20
  • MQL
db.users.aggregate([
    {$match: {gender: "男"}},
    {$skip: 100},
    {$limit: 20},
    {$project: {
        '名': '$first_ name',
        '姓': '$last_ name'
     }}
 });

文章作者: Truda
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Truda !
评论
  目录