假设我有学生和老师的多对多关系。如果我只想找出给定学生的所有老师,反之亦然,我通常使用嵌入式对象 ID 对其进行建模。例如,如果教师有一个属性 studentIds,它是一个学生对象 ID 的数组,那么这足以完成您需要的所有查询。
但是,假设学生可以给老师打分。这个评级应该如何适应模型?目前,我执行以下操作:
- 在教师内部而不是存储学生数组,我存储了一个 json 对象数组 {studentId: ObjectId, rating: String}
- 进行查询时,我将 json 对象数组转换为 studentIds 数组并像往常一样提取完整信息
- 所以现在我有一个学生对象数组和一个带有评分的json对象数组
- 但是,由于 MongoDB 中的 $in 运算符不保留排序,我需要自己进行排序
- 在最后一步,一切都井井有条,我可以将学生对象与评级结合起来得到我想要的
它有效,但似乎有点令人费解,有没有更好的方法来做到这一点?