MongoDB如果没有中间表,如何设计,学员对应课程,并且有对课程的得分排序?

多个学生可以选择多个课程,并且没门课程有得分。
怎么查询每门课程的排名?

目前是学生有一个课程属性,数组类型。存放课程id。

阅读 3k
1 个回答

在不会引起显著问题的情况下,鼓励用冗余代替范式的设计。比如你的情况,可以把课程ID以外的其他必要属性也冗余到课程属性里面来,包括课程得分。
排序的问题,可能不好使用索引,但是一门课程有多少人修呢?如果数据量小就直接内存排序就好了

db.students.aggregate([
    // 如果有其他过滤条件放这里,比如班级
    {$unwind: "$course"},
    {$match: {"course.name": "数学"}},
    {$sort: {"course.name": 1}}
    
])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进