MongoDB Aggregation 聚合框架

您所在的位置:网站首页 compass使用教程 MongoDB Aggregation 聚合框架

MongoDB Aggregation 聚合框架

2023-09-18 17:13| 来源: 网络整理| 查看: 265

MongoDB Aggregation 聚合框架

文章目录 MongoDB Aggregation 聚合框架前言1.MongoDB 聚合框架是什么2.管道(Pipeline)和步骤(Stage)3.聚合运算的基本格式4.步骤5.步骤中的运算符5.1 $match5.2 $project5.3 $group 6.MQL & SQL 对比6.1 例16.2 例2 7.特殊步骤7.1 $unwind7.2 $bucket7.3 $facet 8.MongoDB Compass(推荐工具)8.1 基本使用8.2 导出 9.Spring Data MongoDB9.1 按日期求和9.2 多字段分组,查询每天的情况 10.参考

前言

本章主要讨论以下几点

介绍 MongoDB Aggregation 聚合框架相关的概念和基础知识MQL(MongoDB 脚本语言)与 SQL 进行类比MongoDB Compass(推荐工具)介绍结合实际项目功能演示 Spring Data MongoDB 1.MongoDB 聚合框架是什么

MongoDB 聚合框架(Aggregation Framework)是一个计算框架,它可以:

作用在一个或几个集合上对集合中的数据进行的一系列运算将这些数据转化为期望的形式

从效果而言,聚合框架相当于 SQL 查询中的

GROUP BYLEFT OUTER JOINAS 2.管道(Pipeline)和步骤(Stage)

整个聚合运算过程称为管道(Pipeline),它是由多个步骤(Stage)组成的,每个管道:

接收一系列文档(原始数据)每个步骤对这些文档进行一系列运算结果文档输出给下一个步骤直到输出最终结果

image-20210308171537360.png

3.聚合运算的基本格式 pipeline = [$stage1,$stage2,$stage3...]; db..aggregate( pipeline, {options} ); 4.步骤 步骤作用SQL 等价运算符$match过滤where$project投影as$sort排序order by$group分组group by$skip/$limit结构限制skip/limit$lookup左外连接left outer join$unwind展开数组无$graphLookup图搜索无$facet/$bucket分面搜索无 5.步骤中的运算符 5.1 $match

类似于 where,匹配条件

$eq/$gt/$gte/$lt/$lte$and/$or/$not/$in$geoWithin/$intersect 5.2 $project

类似于 as,设置别名

选择需求的或者排除不需要的字段$map/$reduce/$filter$range$multiply/$divide/$substract/$add$year/$month/$dayOfMonth/$hour/$minute/$second 5.3 $group

类似于 group by 分组

$sum/$avg$push/$addToSet$first/$last/$max/$min 6.MQL & SQL 对比 6.1 例1

SQL:

SELECT NAME AS '名称', age AS '年龄' FROM users WHERE gender = '男' skip 100 LIMIT 20

MQL :

db.users.aggregate([ // 步骤1:匹配性别 { $match: { gender: "男" } }, // 步骤2:跳过前100 { $skip: 100 }, // 步骤3:取20个 { $limit: 20 }, // 步骤4:设置别名 { $project: { "名称": "$name", "年龄": "$age" } } ]) 6.2 例2

SQL:

SELECT department, count(*) AS count FROM users WHERE gender = '男' GROUP BY department HAVING count(*) "code": 0, "msg": "成功", "data": [ { "operateDay": "2021-03-04", "pass": "true", "count": 666, "failureReason": [] }, { "operateDay": "2021-03-04", "pass": "false", "count": 10, "failureReason": [ "原因1", "原因2", ... ] }, { "operateDay": "2021-03-05", "pass": "true", "count": 909, "failureReason": [] } ] } 10.参考 《MongoDB高手课》- 唐建法Spring 官网


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3