MongoDB 聚合

由 yingchiajun 创建,小路依依 最后一次修改 2017-01-09

MongoDB教程 - MongoDB聚合


聚合操作来自多个文档的值组,并对分组的数据返回单个值。

在SQL中,avg,sum和count函数都是聚合操作的示例。

要在MongoDB中进行聚合,请使用aggregate()方法。

语法

aggregate()方法的基本语法如下

>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

例子

要获取每个用户编写的教程数,请使用aggregate()方法,如下所示:

> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
>

聚合表达式

下表列出了聚合表达式。

表达式 描述 例子
$sum 总和值。 db.mycol.aggregate([{$ group:{_id:“$ by_user",num_tutorial:{$ sum:“$ comments"}}}]
$avg 计算平均值。 db.mycol.aggregate([{$ group:{_id:“$ by_user",num_tutorial:{$ avg:“$ comments"}}}])
$min 从集合中的所有文档获取相应值的最小值。 db.mycol.aggregate([{$ group:{_id:“$ by_user",num_tutorial:{$ min:“$ comments"}}}]
$max 获取值的最大值。 db.mycol.aggregate([{$ group:{_id:“$ by_user",num_tutorial:{$ max:“$ comments"}}}])
$push 将值插入到结果文档中的数组。 db.mycol.aggregate([{$ group:{_id:“$ by_user",url:{$ push:“$ url"}}}])
$addToSet 将值插入到生成的文档中的数组,而不创建重复 db.mycol.aggregate([{$ group:{_id:“$ by_user",url:{$ addToSet:“$ url"}}}])
$first 根据分组从源文档获取第一个文档。 db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根据分组从源文档获取最后一个文档。 db.mycol.aggregate([{$ group:{_id:“$ by_user",last_url:{$ last:“$ url"}}}])

管道操作

在MongoDB中,我们可以对一些文档执行操作,并将输出用作下一个命令的输入,以此类推。

我们可以在管道操作中使用以下操作。

  • $project: 从集合中选择特定字段。
  • $match: 过滤文档。
  • $group: 聚合
  • $sort: 排序文档。
  • $skip: 向前跳过。
  • $limit: 以从当前位置开始的给定数量限制文档的数量。
  • $unwind: 展开正在使用数组的文档。
以上内容是否对您有帮助:

您可能还喜欢:

二维码
建议反馈
二维码