前提:利用nosql和mongdb插入了100个学生信息。
在pycharm中,新建一个文件,
把每一门课程的学生按照成绩分组:[0, 60)为不及格,[0, 75)为良好,[75, 90)为优秀,90 及以上为天才。列出每一
门课每个分组的所有学生的姓名和成绩。
已经写出一部分,但无法运行:
```python
import pymongo as mg # 引入 pymongo 包
uri = 'mongodb://root:123456@192.168.116.131:27017/database?authSource=admin&authMechanism=SCRAM-SHA-1'
client = mg.MongoClient(uri) # 创建一个 Mongo 客户端
db = client.get_database('mydb')
myscores = db.get_collection('myscores')
students = myscores.aggregate([{
'$lookup':{
'from':'mycoll',
'localField':'student_id',
'foreignField':'_id',
'as':'student'
}
},{
'$unwind':'$student'
},{
'$bucket':{
'groupBy':'$score',
'boundaries':[0,60,75,0,101],
'output':{
'student':{
'$push':{
'course':'$course',
'name':'$student.name',
'score':'$score'
}
}
}
}
},{
'$unwind':'$student'
},{
'$group':{
'_id':{'course':'$student.course','level':'$_id'},
'students':{
'$push':{
'name':'$student.name',
'score':'$student.score'
}
}
}
},{
'$group':{
'_id':'$_id.course',
'levels':{
'$push':{
'level':'$_id.level',
'student':'$students'
}
}
}
}])
level_name = {
0:'不及格',
60:'良好',
75:'优秀',
90:'天才'
}
for bucket in students:
print(bucket['_id'])
for level in bucket['levels']:
print('\t',level_name[level['level']])
for stud in level['students']:
print('\t\t',stud['name'],'\t',stud['score'])
```