news 2026/3/26 16:27: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/3/22 23:38:14

ISO 26262汽车功能安全完整指南:从理论到实践的权威手册

ISO 26262汽车功能安全完整指南:从理论到实践的权威手册 【免费下载链接】ISO26262中文版本PDF下载分享 ISO 26262 中文版本 PDF 下载 项目地址: https://gitcode.com/Open-source-documentation-tutorial/442c6 在现代汽车电子系统日益复杂的背景下&#xf…

作者头像 李华
网站建设 2026/3/20 19:39:00

跨平台翻译工具pot-desktop:提升工作效率的终极解决方案

你是否经常在阅读外文资料时感到束手无策?面对图片中的文字信息无法复制粘贴?在不同设备间切换翻译软件导致体验割裂?pot-desktop作为一款开源的跨平台翻译工具,完美解决了这些痛点,让你的翻译体验更加流畅高效。 【免…

作者头像 李华
网站建设 2026/3/20 19:38:59

获取京东商品评论数据,jd.item_reviewAPI接口指南

根据京东开放平台官方文档及开发者实践,获取京东商品评论数据需通过京东开放平台API接口实现,具体指南如下: 一、接口核心信息 接口名称:jd.item_review(商品评论列表)、jingdong.comments.list&#xff…

作者头像 李华
网站建设 2026/3/20 19:38:57

Day29 装饰器

浙大疏锦行 # 1. 类装饰器示例 def add_greeting(cls):"""类装饰器:给类添加打招呼方法"""def greet(self):return f"你好,我是{self.name}"cls.greet greetreturn clsadd_greeting class Person:def __init_…

作者头像 李华
网站建设 2026/3/20 22:25:24

17、网络攻击与Apache服务器安全解析

网络攻击与Apache服务器安全解析 1. 网络攻击类型 现代网络存在多种攻击类型,这些攻击利用基础网络协议的小漏洞,在看似安全的平台上造成严重破坏。 - Smurf攻击与Fraggle攻击 - Smurf攻击 :攻击者同时向两个网络的IP广播地址发送两个ICMP ECHO请求(ping),数据包…

作者头像 李华
网站建设 2026/3/20 22:25:22

智能锁技术解析:为什么半导体指纹比光学指纹更安全?百元款智能门锁怎么选?C级锁芯+防撬报警,一文说明白

小区张阿姨花两千多买的人脸识别锁,降温天突然“罢工”,让她拎着菜在楼道冻了半小时。打开投诉ping台,“误开”“没电被锁”“售后失联”的吐槽比比皆是。曾被奉为“居家神器”的智能门锁,为何成了不少人的“焦虑源”?…

作者头像 李华