我尝试使用MongoDB创建数据库。由于我没有使用NoSQL数据库的经验,我在设计数据库方面遇到了一些麻烦。
我想创建一个数据库,其中一个学生可以成为多个会话的一部分,一个会话可以包含多个学生(多对多)此外,每个活动都会链接到一个会话中的一个学生。
到目前为止,我的设计方式如下:
会话:
Sessions.students = [student_id1, student_id2]
学生:
Students.sessions = [session_id1, session_id2]
但我的问题是,我应该把关系存储在会话或学生中,还是存储在两者中(如上所述)?
这是创建事件关系的正确方法吗?
事件:
Event.studentid = [student_id1]
Event.sessionid = [session_id1]
答案 0 :(得分:2)
1)如果您需要查找每个课程中有多少学生以及每个学生参加的课程数量。
对于mongodb商店中的许多关系,每个其他馆藏都有。
2)如果其中一个问题与您的项目相关,则只相应地存储ID。
例如:如果您需要查找会话信息而不是学生信息,请存储
session.student = [studentid1,id2 id3]; student.session = []不需要
也可以使用索引进行搜索,但不要使用过多的索引。
答案 1 :(得分:1)
作为用户,您在数据库中有2个名为“学生和学生”的集合。会话。
在学生集合中:每个文档都包含一系列sessionIds&在会话集合中:每个文档都包含studentIds数组。
要获取列表中的数据,您需要使用聚合
查询学生
students.aggregate({
//here write query using $match, $unwind, $lookup
//$unwind : sessionIds from sessions
})
查询
等会话 sessions({
//here write query using $match, $unwind, $lookup
//$unwind : studentIds from students
})