)
十八、MongoDB 之聚合函数查询统计第3关聚合表达式对文档数据进行统计任务描述本关任务按照编程要求使用aggregate()方法结合聚合管道操作符和聚合表达式对文档数据进行统计。相关知识为了完成本关任务你需要掌握1.常用聚合表达式2.如何结合聚合管道操作符使用聚合表达式完成统计。聚合表达式常用的几个聚合表达式表达式 用法$sum 计算总和$avg 计算平均值$min 获取集合中所有文档对应值的最小值$max 获取集合中所有文档对应值的最大值$push 在结果文档中插入值到一个数组中$addToSet 在结果文档中插入值到一个数组中但不创建副本$first 根据资源文档的排序获取第一个文档数据$last 根据资源文档的排序获取最后一个文档数据如何对文档进行统计在数据库mydb2有集合educoder内容如下_id course author tags learning_num1 Python表达式问题求解实训 李暾 Python基础,求解 18822 Java语言之基本语法 余跃 Java基础,语法 8143 Python面向对象编程实训 李暾 Python基础,面向对象 1434 Android综合实训之物联网移动应用开发1 prophet5 Android,物联网,移动开发 207现在我们通过aggregate()方法来获取每个作者拥有的实训数量命名为num_coursedb.educoder.aggregate([{$group:{_id:$author,num_course:{$sum:1}}}])查询结果如下命令解析先通过聚合管道操作符$group将author字段数据分组$sum:1的含义如果前面的情况出现一次就加1如果后面为$sum:2那么前面条件每满足一次就加2通过aggregate()方法来获取每个作者的实训学习总人数learning_sumdb.educoder.aggregate([{$group:{_id:$author,learning_sum:{$sum:$learning_num}}}])查询结果如下编程要求为了减少你的工作量给出以下文档内容{_id:1,course:Python表达式问题求解实训,author:李暾,tags:[Python基础,求解],learning_num:1882},{_id:2,course:Java语言之基本语法,author:余跃,tags:[Java基础,语法],learning_num:814},{_id:3,course:Python面向对象编程实训,author:李暾,tags:[Python基础,面向对象],learning_num:143},{_id:4,course:Android综合实训之物联网移动应用开发1,author:prophet5,tags:[Android,物联网,移动开发],learning_num:207}先在命令行中操作将例子中的文档插入数据库test3中的集合educoder中然后仿照例子中的查询方法再在右侧代码栏Begin-End中按要求输入符合以下3条要求的命令以分号隔开由于测试需要请在代码里$符号前添加转义符不需要有空格格式如$平时在命令行操作不需要将文档按照作者author分组然后取得每个组的第一个实训名first_course查询跟随每个作者author的平均学习人数learning_avg统计集合中各tags拥有的课程数量course_num提示先将tags字段使用$unwind拆分再统计。具体的返回结果请查看测试集。测试说明平台会对你编写的代码进行测试将你在代码行编写的命令传到数据库中操作检测返回结果是否和目标一致。开始你的任务吧祝你成功#********* Begin *********#echo db.educoder.aggregate({\$group:{_id:\$author,first_course:{\$first:\$course}}});db.educoder.aggregate({\$group:{_id:\$author,learning_avg:{\$avg:\$learning_num}}});db.educoder.aggregate([{\$unwind:\$tags},{\$group:{_id:\$tags,course_num:{\$sum:1}}}]);#********* End *********#有任何问题都可以随时关注私信