MongoDB详细语法思维导图点击此处下载
随着教育改革的多元化发展,学校考核方式正在变得越来越多元。这也造成传统的课程成绩数据库表的结果不再满足多元考核目标的设定。
学校准备引入noSQL数据库来存储课程考核成绩等信息。MongoDB作为一种分布式的noSQL数据库,被学校选择作为下一代的课程成绩数据库软件。
为了测试MongoDB是否能够满足课程成绩数据的管理,你接到了以下的任务:
创建一个MongoDB数据库,数据库名称为“DB你的学号“
创建一个MongoDB数据库集合,集合名称为“你的姓名拼音首字母“
导入测试数据:测试数据已经放入一个jsonArray文件(见附件)使用mongoimport或者编写load_scores.js脚本实现数据导入。
使用你自己的学号、所在班级、授课教师、课程名称插入一条‘分布式数据库课程原理与应用的’成绩记录,记录数据结构应该与其它条目相同。
查询大数据2019级分布式数据库课程的学生期末成绩
查询‘张三’老师所教的网络操作系统课程的学生的作业1成绩
查询分布式数据库课程期中考试不及格的学生学号
将所有女生(gender=0)的总评成绩增加5分,如果增加后成绩超过100,则设置为100
删除没有平时作业成绩的学生记录
按授课老师分别统计“网络操作系统“课程的平均总评成绩
答题要求:
使用MongoShell完成题目中要求的操作,并将命令和执行命令的结果截图填写到答题页;
准备工作:
创建数据库:use db123;
创建集合:db.createCollection("wxw");
导入数据:
数据集点击此处下载
Var doc=[{},……,{}]
db.wxw.insert(doc);
4.使用你自己的学号、所在班级、授课教师、课程名称插入一条‘分布式数据库课程原理与应用的’成绩记录,记录数据结构应该与其它条目相同。
var docs = { "course": "分布式数据库课程原理与应用", "teacher": "小小冷", "sno": "123", "gender": 1, "major": "大数据", "grade": 2019, "平时作业": { "作业1": 95, "作业2": 80 }, "期中": 100, "期末": 90, "总评": 93 } db.wxw.insertOne(docs);
查找是否插入成功:db.wxw.find({"sno": "123"})
5.查询大数据2019级分布式数据库课程的学生期末成绩
db.wxw.find({"major": "大数据",'grade':2018,"course":'分布式数据库原理与应用'},{'期末':1})
6.查询‘张三’老师所教的网络操作系统课程的学生的作业1成绩
var 查询条件 = {'teacher':'张三','course':'网络操作系统'}; var 返回字段 = {'平时作业.作业1':1}; db.wxw.find(查询条件, 返回字段);
7.查询分布式数据库课程期中考试不及格的学生学号
var 步骤1 = {$match:{'course':'分布式数据库原理与应用','期中':{$lt:60}}} var 步骤2 ={$project:{_id:0,sno:1}} var 管道=[步骤1,步骤2] db.wxw.aggregate(管道)
8.将所有女生(gender=0)的总评成绩增加5分,如果增加后成绩超过100,则设置为100
query1 = {"gender":"0"} update1 = {$inc:{"总评":5}} option1 = {} db.wxw.updateMany(query1, update1, option1)
如果总评成绩超过了100,自动设置为100
var querys={'总评':{$gt:100}}} var updates={$set:{'总评':100}}; var options={multi:1}; db.wxw.update(querys, updates, options);
再次查询是否有异常成绩,没有
db.wxw.find({‘总评’:{$gt:100}})
9.删除没有平时作业成绩的学生记录
找到该记录数据:db.wxw.find({"平时作业":null});
删除该数据记录:db.wxw.remove({"平时作业":null});
再次查看:db.wxw.find({"平时作业":null});
10.按授课老师分别统计“网络操作系统“课程的平均总评成绩
var 查询条件 = {'course':'网络操作系统'} var 步骤1 = {$match:查询条件} var 步骤2 = {$group:{_id:'$teacher', 平均总评成绩:{$avg:'$总评'}}} var 重命名Id字段 = {$project:{_id:0,'老师':'$_id','网络操作系统':'$平均总评成绩'}} var 管道 = [步骤1,步骤2] db.wxw.aggregate(管道)