簡體   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