)
十八、MongoDB 之聚合函数查询统计第1关聚合管道操作符将文档定制格式输出一任务描述本关任务按照编程要求对集合 educoder 进行相应的查询输出。相关知识为了完成本关任务你需要掌握1.聚合管道操作符的作用2.$project 的用法3.$match 的用法。常用聚合管道操作符常用的几个聚合管道操作符操作符 作用$project 修改输入文档的结构。可以用来重命名、增加或删除域也可以用于创建计算结果以及嵌套文档match∣用于过滤数据只输出符合条件的文档。match使用MongoDB的标准查询操作$limit 用来限制MongoDB聚合管道返回的文档数$skip 在聚合管道中跳过指定数量的文档并返回余下的文档$unwind 将文档中的某一个数组类型字段拆分成多条每条包含数组中的一个值$group 将集合中的文档分组可用于统计结果$sort 将输入文档排序后输出注意以上操作不会修改集合的内容只是将集合以指定形式输出。在数据库 mydb1 有集合 educoder 内容如下_id course author tags learning_num1 Python表达式问题求解实训 李暾 Python基础,求解 18822 Java语言之基本语法 余跃 Java基础,语法 8143 Python面向对象编程实训 李暾 Python基础,面向对象 1434 Android综合实训之物联网移动应用开发1 prophet5 Android,物联网,移动开发 207$project 修改文档结构输出有时候我们并不会用到文档的全部内容只是使用其中几列这时候就可以使用 project进行操作或者有时候要重命名键值列名也可以使用project。对集合 educoder 进行操作只输出作者 author 和学习人数 learning_num 信息_id也不要不显示_id默认是显示的db.educoder.aggregate({$project:{_id:0,author:1,learning_num:1}})0 为不显示非 0 为显示。运行结果如图1所示图 1重命名字段名把 learning_num 重命名为 numdb.educoder.aggregate({$project:{course:1,authoe:1,tags:1,num:$learning_num}})运行结果如图2所示图 2$match 筛选文档输出有时候我们要在集合中筛选出符合特定条件的文档这时候使用 $match 便可以很快实现。只输出作者为“李暾”的文档db.educoder.aggregate({$match:{author:李暾}})运行结果如图3所示图 3编程要求为了减少你的工作量给出以下文档内容{_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}先在命令行中操作将上述文档插入数据库 test1 中的集合 educoder 中然后仿照例子中的查询方法再在右侧代码栏 Begin-End 的中按要求输入符合以下两条要求的命令以分号隔开由于测试需要请在代码里$符号前添加转义符不需要有空格格式如$平时在命令行操作不需要文档输出时只保留 course 和 learning_num 字段_id也不要保留输出学习人数 learning_num 为82档。具体的返回结果请查看测试集。测试说明平台会对你编写的代码进行测试将你在代码行编写的命令传到数据库中操作检测返回结果是否和目标一致。开始你的任务吧祝你成功#********* Begin *********#echo db.educoder.aggregate({\$project:{_id:0,course:1,learning_num:1}});db.educoder.aggregate({\$match:{learning_num:1882}});#********* End *********#有任何问题都可以随时关注私信