如何解决mongoDB中的多对多关系
我的nosql数据库中有两个模型(mongoDB和mongoose.js): User 和 Class 。
每个班级都有一位老师和许多学生(老师和学生是 User 模型)。
每个用户可以有很多课程。
实现数据库的最佳解决方案是什么?
我认为在 Class 模型中具有user_id
的数组和在 User 模型中具有class_id
的数组是最好的,对吗? >
假设教师用户不能作为学生,而学生用户也不能作为教师。
解决方法
您可以在模式中使用猫鼬的ref
(请参阅docs)。例如:
const UserSchema = new mongoose.Schema({
firstName: String,lastName: String,// other properties you want to define
classes: [
{
type: mongoose.Schema.Types.ObjectId,ref: "Class"
}
]
})
const ClassSchema = new mongoose.Schema({
className: String,// other properties you want to define
users: [
{
type: mongoose.Schema.Types.ObjectId,ref: "User"
}
]
})
稍后在查询数据库时,可以使用猫鼬的populate自动获取引用的文档,而不仅仅是文档的ID:
User.findById(userId).populate("classes");
Class.findById(classId).populate("users");
这是一个很好的教程,它对它进行了更详细的说明: https://bezkoder.com/mongodb-many-to-many-mongoose/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。