news 2026/4/16 17:03:16

【MongoDB实战】5.2 常用聚合阶段实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【MongoDB实战】5.2 常用聚合阶段实战

文章目录

  • 《MongoDB实战入门》第5章 进阶查询:聚合管道与数据统计分析
    • 5.2 常用聚合阶段实战
      • 前置回顾:测试数据集结构
      • 5.2.1 $match:筛选数据(管道的“前置过滤器”)
        • 核心作用
        • 语法格式
        • 实战案例
        • 关键注意事项
      • 5.2.2 $project:字段投影与重命名
        • 核心作用
        • 语法格式
        • 实战案例
        • 关键注意事项
      • 5.2.3 $group:分组统计(聚合计算核心)
        • 核心作用
        • 语法格式
        • 实战案例
        • `关键注意事项`
      • 5.2.4 $sort:排序聚合结果
        • 核心作用
        • 语法格式
        • 实战案例
        • `关键注意事项`
      • 5.2.5 $limit / $skip:聚合结果分页
        • 核心作用
        • 语法格式
        • 实战案例
        • 关键注意事项
      • 5.2.6 综合实战:多阶段组合实现复杂统计
        • 步骤拆解
        • 实战代码
        • 执行结果
      • 5.2.7 核心总结

《MongoDB实战入门》第5章 进阶查询:聚合管道与数据统计分析

5.2 常用聚合阶段实战

  • 聚合管道的核心价值在于通过不同阶段的组合实现复杂数据处理。
  • 本节聚焦最常用的聚合阶段($match$project$group$sort$limit/$skip),结合电商订单场景拆解每个阶段的核心用法、语法要点与实战代码,所有案例均基于5.1节创建的orders集合。
    • 若未创建,需先执行5.1节的“前置准备:创建测试数据集”代码。

前置回顾:测试数据集结构

// 快速查看订单集合结构db.orders.findOne();

5.2.1 $match:筛选数据(管道的“前置过滤器”)

核心作用
  • 作为聚合管道的起始阶段(最优实践),筛选符合条件的文档,减少后续阶段需要处理的数据量,是聚合管道性能优化的关键。
  • 其查询条件语法与find()完全一致,但仅用于筛选文档(而非投影字段)。
语法格式
{$match:{<查询条件>}}
实战案例
  • 需求1:筛选“已支付”且订单金额大于1000元的订单
// 仅筛选,不做后续处理db.orders.aggregate([{$match:{status:"已支付",// 等值匹配amount:{$gt:1000}// 金额>1000}}]);

  • 需求2:筛选2025年1月2日创建的所有订单
db.orders.aggregate([{$match:{create_time:{$gte:ISODate("2025-01-02T00:00:00Z"),$lte:ISODate("2025-01-02T23:59:59Z")}}}]);

关键注意事项
  • $match应尽可能放在管道起始位置,先过滤再计算;

  • 支持所有find()的查询操作符($eq$gt$in$and等),例如:{ $match: { category: { $in: ["电子产品", "服装"] } } }

5.2.2 $project:字段投影与重命名

核心作用

控制文档的字段显示/隐藏、重命名字段、新增计算字段,重塑文档结构,是聚合管道中“调整输出格式”的核心阶段。

语法格式
{$project:{<字段1>:1/0,// 1=显示,0=隐藏(_id默认显示,需设为0隐藏)<新字段名>:"$原字段名",// 重命名字段<计算字段>:<表达式>// 新增基于原字段的计算字段}}
实战案例
  • 需求1:仅显示订单ID、商品分类、订单金额,并重命名amount订单金额,隐藏_id
db.orders.aggregate([{$match:{status:"已支付"}},// 先筛选{$pr
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:09:19

微信封杀豆包,阿里系APP跟进,背后到底怕什么?

2025年12月&#xff0c;豆包手机正式发布&#xff0c;凭借其革命性的AI技术和深度集成的智能助手系统&#xff0c;迅速吸引了大量科技爱好者的目光。然而&#xff0c;豆包手机的成功并未获得市场的完全接纳。相反&#xff0c;它遭遇了 微信 和 阿里系应用 的集体封杀&#xff0…

作者头像 李华
网站建设 2026/4/16 9:08:01

【spring源码】从废弃的XmlBeanFactory到XmlBeanDefinitionReader

从废弃的XmlBeanFactory到XmlBeanDefinitionReader 统一术语 在开始之前&#xff0c;我们先明确几个关键术语&#xff1a; BeanFactory&#xff1a;Spring 容器的基础接口&#xff0c;负责 Bean 的创建、管理和获取BeanDefinition&#xff1a;Bean 的定义信息&#xff0c;包…

作者头像 李华
网站建设 2026/4/16 9:03:55

Linux下创建线程:从入门到实践

&#x1f427; Linux下创建线程&#xff1a;从入门到实践 &#x1f4da; 线程基础概念&#x1f527; Linux线程创建方法1. 基本线程创建2. 带参数的线程 ⚙️ 线程属性设置&#x1f504; 线程同步机制1. 互斥锁&#xff08;Mutex&#xff09;2. 条件变量&#xff08;Condition …

作者头像 李华
网站建设 2026/4/16 10:45:32

《网络数据安全风险评估办法》出台在即,CCRC-DSA成关键人才!

随着国家互联网信息办公室在2025年12月发布《网络数据安全风险评估办法&#xff08;征求意见稿&#xff09;》&#xff0c;我国数据安全监管的“另一只靴子”即将落地。这份《办法》首次在国家法规层面&#xff0c;为企业开展数据安全风险评估构筑了强制性、系统化的操作框架&a…

作者头像 李华
网站建设 2026/4/16 2:07:38

魔兽世界:私服复刻经典版本让玩家重新回到60级的艾泽拉斯大陆

在游戏世界里&#xff0c;魔兽世界私服是一个特别的存在。它为一些玩家提供了重温经典的机会&#xff0c;让那些因各种原因无法在官服继续游戏的人&#xff0c;能再次踏入艾泽拉斯大陆。许多玩家在私服中找回了曾经在魔兽世界里的热血与激情&#xff0c;和老友们重新组队刷本&a…

作者头像 李华
网站建设 2026/4/16 11:02:43

26、Linux网络防御与入侵检测全解析

Linux网络防御与入侵检测全解析 1. iptables基础 iptables可用于设置、维护和检查Linux内核中指定的IP数据包过滤规则表。规则表包含两种链: - 内置链 - 用户自定义链 每条链由一组规则组成,这些规则用于匹配一组数据包,并确定匹配数据包时应采取的操作。iptables的使用…

作者头像 李华