MongoDB 的文档操作-MongoDB 聚合查询
-
- 1.求和 -
$
sum
- 1.求和 -
-
2.条件筛选 - $match
-
3.最大值 - $max
-
4.最小值 - $min
-
5.平均值 - $avg
-
6.统计结果返回数组 - $push
-
7.数组字段拆分 - $unwind
-
8.管道操作
-
- 8.1 $project-聚合投影约束
- 8.2 $project-字符串处理
- 8.3 $project-算术运算
- 8.4 $project-日期操作
-
- 8.4.1 MongoDB 中的日期处理
- 8.4.2 $project-日期处理
-
在 MongoDB 中我们可以通过 aggregate()函数来完成一些聚合查询,aggregate()函数主要用于处理诸如统计,平均值,求和等,并返回计算后的数据结果
-
语法格式:
db.COLLECTION_NAME.aggregate([{$ group:{_id:"$ 分组键名","$ 分组键名",…,别名:{聚合运算:"$运算列"}}},{条件筛选:{键名:{运算条件:运算值}}}]) -
常见的 mongo 的聚合操作和 mysql 的查询做类比
1.求和 - $
sum
- 查询 dev 集合中一共有多少个文档。
- 相当于 sql 语句:SELECT count(*) AS count FROM dev
- db.dev.aggregate([{
$
group:{_id:null,count:{$
sum:1}}}]) $
group:分组,代表聚合的分组条件- _id:分组的字段。相当于 SQL 分组语法 group by column_name 中的 column_name 部分。如果根据某字段的值分组,则定义为_id:’
$
字段名’。所以此案例中的 null 代表一个固定的字面值’null’。 - count:返回结果字段名。可以自定义,类似 SQL 中的字段别名
$
sum:求和表达式。相当于 SQL 中的 sum()- 1:累加值。
- 查询 dev 集合中的所有 size 键中的值的总和
- 相当于 sql 语句:SELECT sum(size) AS totalSize FROM dev
- db.dev.aggregate([{
$
group:{_id:null,totalSize:{$
sum:"$
size"}}}]) - “
$
size”:代表文档中的 szie 字段的值。
- 对每一个 title 进行分组并计算每组中的 size 的总和
- 相当于 sql 语句:SELECT title AS _id , sum(size) AS totalSize FROM dev GROUP BY title
- db.dev.aggregate([{
$
group:{_id:"$
title",totalSize:{$
sum:"$
size"}}}])
2.条件筛选 - $
match
- 查询 dev 集合有多少文档的 size 大于 200
- db.dev.aggregate([{
$
match:{size:{$
gt:200}}},{$
group:{_id:null,totalSize:{$
sum:1}}}]) - 相当于 SQL 语句:SELECT count(*) FROM dev WHERE size > 200
$
match:匹配条件,相当于 SQL 中的 where 子句,代表聚合之前进行条件筛选
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: