聚合表达式
常用的几个聚合表达式:
| 表达式 | 用法 |
|---|---|
| $sum | 计算总和 |
| $avg | 计算平均值 |
| $min | 获取集合中所有文档对应值的最小值 |
| $max | 获取集合中所有文档对应值的最大值 |
| $push | 在结果文档中插入值到一个数组中 |
| $addToSet | 在结果文档中插入值到一个数组中,但不创建副本 |
| $first | 根据资源文档的排序获取第一个文档数据 |
| $last | 根据资源文档的排序获取最后一个文档数据 |
如何对文档进行统计
在数据库mydb2有集合educoder内容如下:
| _id | course | author | tags | learning_num |
|---|---|---|---|---|
| 1 | Python表达式问题求解实训 | 李暾 | Python基础,求解 | 1882 |
| 2 | Java语言之基本语法 | 余跃 | Java基础,语法 | 814 |
| 3 | Python面向对象编程实训 | 李暾 | Python基础,面向对象 | 143 |
| 4 | Android综合实训之物联网移动应用开发(1) | prophet5 | Android,物联网,移动开发 | 207 |
- 现在我们通过
aggregate()方法来获取每个作者拥有的实训数量,命名为:num_course:
db.educoder.aggregate([{$group:{_id:'$author',num_course:{$sum:1}}}])
查询结果如下:

命令解析:
- 先通过聚合管道操作符
$group将author字段数据分组; $sum:1的含义:如果前面的情况出现一次,就加1,如果后面为$sum:2,那么前面条件每满足一次就加2;- 通过
aggregate()方法来获取每个作者的实训学习总人数learning_sum:
db.educoder.aggregate([
{
$group:{_id:'$author',learning_sum:{$sum:'$learning_num'}}
}
])
查询结果如下:

本文介绍了如何使用MongoDB的aggregate()函数和聚合表达式,如$sum计算每个作者的实训课程数量。通过$group操作符按作者分组并对learning_num字段求和,展示了统计数据库中每个作者的实训课程总数。

4410

被折叠的 条评论
为什么被折叠?



