mongoDB如何處理多對多關係

來源:互聯網
上載者:User

標籤:

 問題描述:例如在關聯式資料庫中有一個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】

mongoDB如何處理多對多關係

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.