4.2 管道聚集框架

MongoDB的管道聚合框架是参考UNIX上的管道命令实现的,数据通过一个多步骤的管道,每个步骤都会对数据进行加工处理,最后返回需要的结果集。
管道提供了高效的数据分析流程,是MongoDB中首选的数据分析方法。
例:

  • db.books.aggregate([
    {$match:{status:"normal"}}, {$group:{_id:"$bookid",total:{$sum:"$num"}}}
    ])

A caption

A caption

A caption

A caption

A caption

A caption

管道聚集的语法格式:

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等, 为计算传递参数