mongoDB如何處理多對多關系


 

問題描述:
例如在關系數據庫中有一個Team表,一個User表,兩者是多對多的關系,即一個Team可以有多個User,一個User也可能屬於多個Team,請問這樣的關系在MongoDB中如何存儲? 
如果是一對多,我知道可以用嵌套,但不知道如何處理多對多的關系,請指教。【來自山賊】
 
問題解答:
 
如何處理好多對多的關系可謂是NoSQL的精髓所在。理論上,可以在一個集合中完成存儲,不過實際上這樣的情況非常罕見。這是由於查詢的多樣性所導致的,若是只有一種類型的查詢,則這種多對多的關系放在一個良好設計的集合中,雖然會有大量的冗余,但是效率一定是最高的。如何設計這種數據庫的關鍵就是看你有多少種查詢,每一種的頻率是多少,使用的其他要求是什么樣的。對於不同的查詢,同樣的數據庫設計的性能也是大不一樣。還有一點,一般不要拆成三個集合,這是傳統的關系型數據庫的思維方式。都NoSQL了一定要換個角度思考問題。常見的情況就是拆成兩個集合,然后有一部分冗余,對最常用的查詢做一個索引。這個還得多多實踐。【Mars】
 
1、Team 里面存一個 teammates: [] 存 User 的 _id 或其它索引值,這樣就知道一個 team 有哪些 user 
2、User 可以反查 Team 的 find({teammates: _id}),這樣就知道一個 user 在哪些 team【理想】
 
與關系數據庫類似,分開兩個文檔存儲, 
然后其中一個文檔的ID列表存在另一個文檔中【jarod】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM