在MongoDB中建模多对多关系可以使用嵌套文档或引用文档的方式。下面是两种解决方法的代码示例:
// 创建学生文档
db.students.insertOne({
_id: 1,
name: "Alice",
courses: [
{ courseId: 1, courseName: "Math" },
{ courseId: 2, courseName: "Science" }
]
})
db.students.insertOne({
_id: 2,
name: "Bob",
courses: [
{ courseId: 1, courseName: "Math" },
{ courseId: 3, courseName: "History" }
]
})
// 创建课程文档
db.courses.insertOne({
_id: 1,
name: "Math",
students: [
{ studentId: 1, studentName: "Alice" },
{ studentId: 2, studentName: "Bob" }
]
})
db.courses.insertOne({
_id: 2,
name: "Science",
students: [
{ studentId: 1, studentName: "Alice" }
]
})
db.courses.insertOne({
_id: 3,
name: "History",
students: [
{ studentId: 2, studentName: "Bob" }
]
})
// 创建学生文档
db.students.insertOne({
_id: 1,
name: "Alice",
courseIds: [1, 2]
})
db.students.insertOne({
_id: 2,
name: "Bob",
courseIds: [1, 3]
})
// 创建课程文档
db.courses.insertOne({
_id: 1,
name: "Math",
studentIds: [1, 2]
})
db.courses.insertOne({
_id: 2,
name: "Science",
studentIds: [1]
})
db.courses.insertOne({
_id: 3,
name: "History",
studentIds: [2]
})
这些示例展示了如何在MongoDB中建立多对多关系。在第一种方法中,学生和课程的信息都被嵌套在每个文档中。在第二种方法中,学生和课程的信息通过引用文档的方式进行关联。
您可以根据自己的需求选择合适的方法,并根据需要进行查询和更新。