4.2 管道聚集框架
MongoDB的管道聚合框架是参考UNIX上的管道命令实现的,数据通过一个多步骤的管道,每个步骤都会对数据进行加工处理,最后返回需要的结果集。
管道提供了高效的数据分析流程,是MongoDB中首选的数据分析方法。
例:
- db.books.aggregate([
{$match:{status:"normal"}}, {$group:{_id:"$bookid",total:{$sum:"$num"}}}
])
管道聚集的语法格式:
db.collection.aggregate(pipeline,options)
pipeline为数组类型参数,包含一系列处理步骤,常用的管道操作符有以下几个:
- $match:过滤文档
- $limit:限制管道中文件的数据
- $skip:跳过指定的文档数量,返回剩下的
- $sort:对所输入的文档进行排序
- $group:对文档进行分组后计算聚集结果
- $out:输出文档到新集合中(必须是管道操作的最后一步)
与$group一起使用的计算聚集操符:
- $first:返回group操作后的第一个值
- $last:返回group操作后的最后一个值
- $max:返回group操作后的最大值
- $min:返回group操作后的最小值
- $avg:返回group操作后的平均值
- $sum:返回group操作后所有值求和
管道中$group分组语法:
db.collection.aggregate([
{ $group:
{ _id: “$itemtype”,
< field1>: { < accumulator1> : < expression1> }, … }
}
])
- id为必选字段,itemtype为被分组字段, 写成$itemtype,可为空或null;
- field1自定义返回字段名,
为可选计算操作,$sum等, 为计算传递参数