聚合 aggregate
-
聚合(aggregate)是基于数据处理的聚合通道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组、过滤等功能,然后经过处理,输出响应的结果。
-
db.集合名称.aggregate({管道:{表达式}})
db.orders.aggregate([ { $match:{ status:"A"}} #管道1:查找匹配条件 { $group:{ _id:"$cust_id",total:{ $sum:"$amount"}}} #管道2:对cust_id分组并设置变量名:_id, #——————对分组后的"amount"求和并设置变量名:total ])
-
常用管道:在Mongodb中,文档处理完毕后,通过管道进行下一次处理,常用管道如下:
- $group:将集合中的文档分组,可用于统计结果
$group
对应的字典有几个键,结果中就有几个键- 分组依据需要放到
_id
后面 - 取不同的字段的值需要 , ‘ ,` ,‘gender
,
$age` - 取字典嵌套的字典中的键的时候,使用
$_id.country
的操作 - 能够同时按照多个键进行分组
{$group:{_id:{country:"$country",province:"$province"}}}
- 结果是:
{_id:{country:"值",province:"值"}}
- $match:匹配数据,只输出符合条件的文档
- 用于筛选信息,只输出符合条件的文档,
PS:match是管道命令,能将结果交给后一个管道,但是find不可以。 - 使用MongoDB的标准查询操作
- 例:查询年龄大于20的学生
db.stu.aggregate( { $match:{ age:{ $gt:20}}} )
</ - 用于筛选信息,只输出符合条件的文档,
- $group:将集合中的文档分组,可用于统计结果