假设我有学生和教师之间的多对多关系。如果我只想查找给定学生的所有老师或反之,则通常使用嵌入式对象ID进行建模。例如,如果老师有一个属性studentIds,它是一个学生对象ID的数组,那么这就足够了,可以执行您需要的所有查询。
然而,假设学生可以为老师评分。这个评分应该如何适应模型?目前我这样做:
1. 在教师内部,不存储学生的数组,而是存储json对象的数组{studentId: ObjectId,rating: String} 2. 在进行查询时,将json对象数组转换为studentIds数组,并像往常一样提取完整信息 3. 现在我有一个学生对象数组和一个带有评分的json对象数组 4. 但是,由于MongoDB中的$in运算符不保留排序,因此我需要自己进行排序 5. 在最后一步,将所有内容按顺序组合起来,以获得所需的结果
这样做起来虽然可行,但似乎有些复杂。是否有更好的方法呢?
然而,假设学生可以为老师评分。这个评分应该如何适应模型?目前我这样做:
1. 在教师内部,不存储学生的数组,而是存储json对象的数组{studentId: ObjectId,rating: String} 2. 在进行查询时,将json对象数组转换为studentIds数组,并像往常一样提取完整信息 3. 现在我有一个学生对象数组和一个带有评分的json对象数组 4. 但是,由于MongoDB中的$in运算符不保留排序,因此我需要自己进行排序 5. 在最后一步,将所有内容按顺序组合起来,以获得所需的结果
这样做起来虽然可行,但似乎有些复杂。是否有更好的方法呢?