MongoDB 聚合
2018-03-20 19:42 更新
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: 展开正在使用数组的文档。
以上内容是否对您有帮助:
更多建议: