2026/1/12 10:43:32
网站建设
项目流程
番禺制作网站技术,网页浏览加速器,小程序怎么做出来的,做网站空间哪个好文章目录 《MongoDB 实战入门》第5章 进阶查询:聚合管道与数据统计分析 5.3 高级聚合场景实战 前置准备 场景1:按用户等级统计用户数量( g r o u p + group+ group+ match) 场景需求 数据准备(插入测试数据) 实战聚合代码 代码解析 预期结果 场景2:商品分类统计销量Top…文章目录《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 高级聚合场景实战前置准备MongoDB版本:推荐5.0+(核心语法兼容低版本)客户端:使用mongosh(替代旧版mongoshell)核心概念:聚合管道(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:按等级分组,统计数量{