在不会引起显著问题的情况下,鼓励用冗余代替范式的设计。比如你的情况,可以把课程ID以外的其他必要属性也冗余到课程属性里面来,包括课程得分。排序的问题,可能不好使用索引,但是一门课程有多少人修呢?如果数据量小就直接内存排序就好了 db.students.aggregate([ // 如果有其他过滤条件放这里,比如班级 {$unwind: "$course"}, {$match: {"course.name": "数学"}}, {$sort: {"course.name": 1}} ])
在不会引起显著问题的情况下,鼓励用冗余代替范式的设计。比如你的情况,可以把课程ID以外的其他必要属性也冗余到课程属性里面来,包括课程得分。
排序的问题,可能不好使用索引,但是一门课程有多少人修呢?如果数据量小就直接内存排序就好了