任务描述
本任务旨在利用MongoDB的聚合表达式分析学生的成绩数据。我们将从students
集合中提取有关每个学生的成绩统计信息,包括总分、平均分、最低分、最高分、所有成绩的列表、唯一的科目列表、最近一次的成绩和最早一次的成绩。这将有助于教育工作者和管理人员了解学生的学习情况。
任务准备
-
环境准备
- 确保已安装MongoDB,并已启动MongoDB服务
- 安装好Navicat Premium客户端工具
-
数据准备
- 创建一个名为
students
的集合,并插入一些样本数据。每个文档应包含学生ID、姓名、科目、成绩和考试日期。
插入的样本数据:
- 创建一个名为
db.students.insertMany([
{ studentId: ObjectId("1"), name: "学生A", subject: "数学", score: 85, examDate: ISODate("2024-05-01") },
{ studentId: ObjectId("1"), name: "学生A", subject: "英语", score: 78, examDate: ISODate("2024-04-20") },
{ studentId: ObjectId("2"), name: "学生B", subject: "数学", score: 92, examDate: ISODate("2024-05-01") },
{ studentId: ObjectId("2"), name: "学生B", subject: "英语", score: 88, examDate: ISODate("2024-04-15") },
{ studentId: ObjectId("1"), name: "学生A", subject: "数学", score: 90, examDate: ISODate("2024-04-25") },
{ studentId: ObjectId("2"), name: "学生B", subject: "科学", score: 95, examDate: ISODate("2024-03-30") }
]);
任务实施
- 执行MongoDB的聚合查询,提取学生成绩的相关信息。
db.students.aggregate([
{
$sort: { examDate: 1 } // 先按考试日期升序排序
},
{
$group: {
_id: "$studentId",
name: { $first: "$name" }, // 学生姓名
totalScore: { $sum: "$score" }, // 总分
averageScore: { $avg: "$score" }, // 平均分
minScore: { $min: "$score" }, // 最低分
maxScore: { $max: "$score" }, // 最高分
allScores: { $push: "$score" }, // 所有成绩的列表
uniqueSubjects: { $addToSet: "$subject" }, // 唯一科目列表
firstScore: { $first: "$score" }, // 最早一次成绩
lastScore: { $last: "$score" } // 最近一次成绩
}
}
]);
2. 查询分析
排序阶段:首先使用$sort
阶段按examDate
字段升序排列学生的成绩,这样在后面分组时,最早的成绩会在前面,最近的成绩会在最后。
聚合阶段:在$group
阶段使用$first
和$last
来分别获取最早和最近的成绩。这里不需要对这两个操作再进行排序。
预期输出
实验实训
通过这个实践任务,参与者可以全面掌握MongoDB聚合表达式的使用。
阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=21284,转载请注明出处。
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=21284,转载请注明出处。
评论0