繁体   English   中英

多对多关系MongoDB

[英]Many to many relations MongoDB

我正在尝试使用MongoDB创建数据库。 由于我没有使用NoSQL数据库的经验,因此在设计数据库时遇到了一些麻烦。

我想建立一个数据库,其中一个学生可以参加多个会议 ,而一个会议可以包含多个学生 (多对多)。 同样,每个事件都在一个会话中链接到一名学生

到目前为止,我是这样设计的:

会议:

Sessions.students = [student_id1, student_id2]

学生:

Students.sessions = [session_id1, session_id2]

但是我的问题是,应该在会话中,在学生中还是在两者中都存储关系(如上)?

这是创建事件关系的正确方法吗?

事件:

Event.studentid = [student_id1]
Event.sessionid = [session_id1]

作为用户,您在数据库中有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 }) 

1)如果您需要查找每节课中有多少名学生以及每名学生参加了多少节课。

对于mongodb中的多对多关系,ID彼此存储在集合中。

2)如果其中一个问题与您的项目相关,则仅相应地存储ID。

例如:如果您需要查找会议信息而不是学生信息,请存储

session.student = [studentid1,id2 id3]; student.session = []不需要

也可以使用索引进行搜索,但不要使用太多索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM