news 2026/6/21 12:22:48

【MongoDB实战】5.3 高级聚合场景实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【MongoDB实战】5.3 高级聚合场景实战

文章目录

  • 《MongoDB 实战入门》第5章 进阶查询:聚合管道与数据统计分析
    • 5.3 高级聚合场景实战
      • 前置准备
      • 场景1:按用户等级统计用户数量(g r o u p + group+group+match)
        • 场景需求
        • 数据准备(插入测试数据)
        • 实战聚合代码
        • 代码解析
        • 预期结果
      • 场景2:商品分类统计销量Top3( $group + $sort + $limit)
        • 场景需求
        • 数据准备(插入测试数据)
        • 实战聚合代码
        • 代码解析
        • 预期结果
      • 场景3:日志数据按小时聚合统计($bucket阶段实战)
        • 场景需求
        • 数据准备(插入测试数据)
        • 实战聚合代码
        • 代码解析
        • 预期结果
        • 扩展优化
      • 场景4:关联查询($lookup,模拟关系型数据库JOIN)
        • 场景需求
        • 数据准备(复用users集合,新增订单数据)
        • 实战聚合代码
        • 代码解析
        • 预期结果
      • 实战注意事项

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

5.3 高级聚合场景实战

前置准备

    1. MongoDB版本:推荐5.0+(核心语法兼容低版本)
    1. 客户端:使用mongosh(替代旧版mongoshell)
    1. 核心概念:聚合管道(Aggregation Pipeline)由多个「阶段(Stage)」组成,每个阶段处理数据后传递给下一个阶段,核心阶段包括$match(筛选)、$group(分组)、$sort(排序)、$limit(限制数量)、$bucket(分桶)、$lookup(关联)。

场景1:按用户等级统计用户数量(g r o u p + group+group+match)

场景需求
  • 筛选出「状态为活跃(active)」的用户;

  • 按用户等级(level:1/2/3/4)分组,统计每个等级的用户数量;

  • 按统计数量降序排序,便于查看分布。

数据准备(插入测试数据)
// 切换到测试数据库use mongodb_practice;// 插入用户数据到users集合db.users.insertMany([{name:"张三",level:1,status:"active",registerTime:newDate("2025-01-01")},{name:"李四",level:2,status:"active",registerTime:newDate("2025-01-02")},{name:"王五",level:1,status:"inactive",registerTime:newDate("2025-01-03")},{name:"赵六",level:3,status:"active",registerTime:newDate("2025-01-04")},{name:"钱七",level:2,status:"active",registerTime:newDate("2025-01-05")},{name:"孙八",level:1,status:"active",registerTime:newDate("2025-01-06")},{name:"周九",level:4,status:"inactive",registerTime:newDate("2025-01-07")},{name:"吴十",level:2,status:"active",registerTime:newDate("2025-01-08")}]);

实战聚合代码
// 按等级统计活跃用户数量db.users.aggregate([// 阶段1:筛选活跃用户(减少后续聚合数据量,提升性能){$match:{status:"active"}},// 阶段2:按等级分组,统计数量{
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 10:50:15

从微信到阿里,豆包手机为何成了互联网巨头的“眼中钉”?

2025年12月,豆包手机的横空出世犹如一颗重磅炸弹,瞬间震动了整个 智能手机行业。这款搭载 AI助手系统 的手机不仅突破了传统的 操作系统 框架,更为用户带来了前所未有的智能体验。然而,令人意外的是,豆包手机的成功却并…

作者头像 李华
网站建设 2026/6/21 9:26:52

Dify代码执行终极指南:从权限诊断到可视化图表的完整解决方案

Dify代码执行终极指南:从权限诊断到可视化图表的完整解决方案 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程,自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesom…

作者头像 李华
网站建设 2026/6/21 3:44:26

21、网络服务器相关知识详解

网络服务器相关知识详解 在网络环境中,服务器的管理和维护涉及多个方面,包括FTP服务、邮件服务以及域名服务等。下面将详细介绍这些服务的相关内容。 1. FTP服务管理 在使用FTP服务时,有两个重要的方面需要关注:数据传输和磁盘空间。 - 数据传输 :所有的FTP下载都会…

作者头像 李华
网站建设 2026/6/21 4:49:24

2025年最新企业即时通讯(IM)软件推荐排名(附产品详解)

在数字化转型浪潮中,企业即时通讯软件(EIM)已从单一沟通工具进化为连接组织、提升协作效率的核心载体。2025年的市场呈现出“安全为基、场景为王、智能赋能”的显著特征,其中易秒办(e-Mobile)凭借其“五大统…

作者头像 李华
网站建设 2026/6/21 8:21:17

28、Linux内核与系统日志全解析

Linux内核与系统日志全解析 1. 内核升级与补丁相关 在Linux系统中,内核是操作系统的核心,它提供了操作系统与底层硬件交互的机制。而且,内核源代码是免费开放的,这意味着我们可以根据自身需求对其进行修改和定制。模块则为内核提供了各种功能,我们能够按需添加或移除模块…

作者头像 李华