第1关:聚合管道操作符将文档定制格式输出(一)
编程要求
为了减少你的工作量,给出以下文档内容:
{
_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 *********#
第2关:聚合管道操作符将文档定制格式输出(二)
编程要求
为了减少你的工作量,给出以下文档内容:
{
_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 *********#
第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
}
先在命令行中操作,将例子中的文档插入数据库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 *********#