繁体   English   中英

不确定如何在 MongoDB 中建立 model 多对多关系

[英]Unsure how to model many-to-many relationship in MongoDB

我是 MongoDB 的新手,我正在尝试将 model 与至少 2 个 collections 的多对多关系(我需要两个 Z0B9ABFE67CC931FC16 项目的 Z0B9ABFE67CC931FCF16)。 我所拥有的是大学、学院和专业的集合,以及学生和他们的成绩簿的另一个集合(这是 SQL 中专业和学生之间的中间实体,不确定 Mongo 是否需要它)。 我试图以此为灵感,但它限制了我,因为我只能通过大学 ID 搜索学生(例如,我想搜索来自某个专业或某个学院的学生)。 我可以将大学、教师和专业的每一行都放在学生收藏中,反之亦然,但我真的不认为这是理想的。 这是我到目前为止所拥有的:

db.students.insertOne({_id:1, firstname: 'John', lastname: 'Silas', ethnicity:'english', civilstatus:'single', residence:'London', email:'johnSilas@gmail.com', gradebook:[{ year:2018, registrationyear:2017, formofeducation:'traditional'}], universities:[1]}) 
db.universities.insertOne({_id:1, name:'University of London', city:'London', adress:'whatever', phone: 'whatever', email: 'whatever@gmail.com', faculty:[{name: 'Law', adress:'whatever', phone: 'whatever', email: 'whatever@gmail.com'}], specialization:[{name:'criminal rights', yearlytax:5000, duration: 3, level:'bachelordegree', language:'english'}], students: [1,2]}) 

如果我不了解基本的 noSQL 概念,我很抱歉,我是新手。 提前致谢。

A和B之间多对多关联的基本模式:

内联引用

  • 在 A 上,将 B id 的列表存储在b_ids类的字段中
  • 在 B 上,将 A id 的列表存储在a_ids类的字段中

每当创建或销毁关联时,这需要两次写入,但在查询时需要零个或一个连接来遍历关联(如果您只想要给定 A 的 Bs 的 id 并且您已经拥有 A 不需要进一步的查询)。

加入model

创建一个 model C ,它有两个字段: a_idb_id 每个关联都由 C 的单个实例表示。

每当创建或销毁关联时,这需要一次写入,但需要对所有涉及关联的查询进行连接(每个查询可能有两个连接)。

暂无
暂无

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

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