![](/img/trans.png)
[英]Unsure how to model a many-to-many relationship with a flag in Mongoid
[英]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之间多对多关联的基本模式:
b_ids
类的字段中a_ids
类的字段中每当创建或销毁关联时,这需要两次写入,但在查询时需要零个或一个连接来遍历关联(如果您只想要给定 A 的 Bs 的 id 并且您已经拥有 A 不需要进一步的查询)。
创建一个 model C ,它有两个字段: a_id
和b_id
。 每个关联都由 C 的单个实例表示。
每当创建或销毁关联时,这需要一次写入,但需要对所有涉及关联的查询进行连接(每个查询可能有两个连接)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.