首页 > 解决方案 > MongoDB中的多对多关系

问题描述

我的 nosql 数据库中有两个模型(mongoDB 和 mongoose.js):UserClass

每个班级有一位老师和许多学生(老师和学生都是用户模型)。

每个用户可以有很多类。

实现数据库的最佳解决方案是什么?

我认为最好有一个user_id内部模型数组和一个用户class_id模型数组,对吗?

假设教师用户不能作为学生,学生用户也不能作为教师。

标签: node.jsmongodbexpressmongoosenosql

解决方案


您可以在架构中使用 mongoose ref(请参阅文档)。例如:

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"
        }
    ]
})

稍后在查询数据库时,您可以使用 mongoose 的填充来自动获取引用的文档,而不仅仅是文档的 id:

User.findById(userId).populate("classes");
Class.findById(classId).populate("users");

这是一个很好的教程,更详细地解释了它: https ://bezkoder.com/mongodb-many-to-many-mongoose/


推荐阅读