)
十八、MongoDB 之聚合函数查询统计第2关聚合管道操作符将文档定制格式输出二任务描述本关任务按照编程要求对集合 educoder 进行相应的查询输出。相关知识上一关已经了解了 project和match 的用法本关就介绍剩余管道操作符的用法。在数据库 mydb1 有集合 educoder 内容如下_id course author tags learning_num1 Python表达式问题求解实训 李暾 Python基础,求解 18822 Java语言之基本语法 余跃 Java基础,语法 8143 Python面向对象编程实训 李暾 Python基础,面向对象 1434 Android综合实训之物联网移动应用开发1 prophet5 Android,物联网,移动开发 207$limit 限制文档数量输出有时候集合中文档数量太大我们只想选取前几行查看一下这时候就可以用 $limit输出前2条文档db.educoder.aggregate({$limit:2})运行结果如图1所示图 1$skip 跳过前 n 条文档输出与 limit相反skip 是跳过前 n 条文档显示剩余文档。将集合 educoder 中的前两条文档跳过显示剩余文档db.educoder.aggregate({$skip:2})$skip 接受一个数字 n表示丢弃结果集中的前 n 个文档运行结果如图2所示图 2limit与skip 可以组合使用db.educoder.aggregate([{$skip:1},{$limit:2}])#跳过第一条显示前两条也就是显示第2-3条文档db.educoder.aggregate([{$limit:2},{$skip:1}])#显示前两条跳过第一条也就是显示第2条文档运行结果如图3所示图 3$unwind 拆分数组类型字段将 educoder 中的 tags 字段拆分成多条每条包含数组中的一个值db.educoder.aggregate({$unwind:$tags})运行结果如图4所示图 4$group 分组输出该操作比较常用因为文档分组后利于我们的统计。比如按照作者分组我们就可以统计出该集合总共有几个作者。在集合 educoder 中按作者分组db.educoder.aggregate({$group:{_id:$author}})运行结果如图5所示图 5$sort 排序输出按照学习人数 learning_num 降序排序输出文档db.educoder.aggregate({$sort:{learning_num:-1}})-1 代表降序排序 1 代表升序排序。运行结果如图6所示图 6编程要求为了减少你的工作量给出以下文档内容{_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}先在命令行中操作将上述文档插入数据库 test2 中的集合 educoder 中然后仿照例子中的查询方法再在右侧代码栏 Begin-End 中按要求输入符合以下3条要求的命令以分号隔开由于测试需要请在代码里$符号前添加转义符不需要有空格格式如$平时在命令行操作不需要输出集合前3条文档将文档按照学习人数 learning_num 升序排序输出除了前两条以外的文档。测试说明平台会对你编写的代码进行测试将你在代码行编写的命令传到数据库中操作检测返回结果是否和目标一致。开始你的任务吧祝你成功#********* Begin *********#echo db.educoder.aggregate({\$limit:3});db.educoder.aggregate({\$sort:{learning_num:1}});db.educoder.aggregate({\$skip:2});#********* End *********#有任何问题都可以随时关注私信