Annabelle.02 2023-12-13 18:17 采纳率: 14.3%
浏览 6

用mingdb和pycharm进行分组

前提:利用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'])

```

  • 写回答

2条回答 默认 最新

  • 软泡芙 C#领域优质创作者 2023-12-20 09:05
    关注

    以下回答来源于AI:
    这段代码不能运行的原因是在第二个$bucket阶段的boundaries参数中存在错误。boundaries参数应该是一个递增的数组,用于定义分桶的边界值。在这段代码中,boundaries参数的值为[0,60,75,0,101],其中包含了两个0。这是不正确的,应该将第二个0改为90,以便正确定义分桶的边界值。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月13日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?