我對NoSQL,MongoDB非常新穎。如何處理2個或多個集合/文檔之間的多對多關係?我們最好使用DBRefs還是嵌入?實際上我已經閱讀過MongoDB手冊,但是我沒有發現關於多對多關係的內容。我錯過了一些觀點?或者MongoDB中沒有這種關係?謝謝!MongoDB,文檔或集合之間的關係
2
A
回答
3
嵌入與參考
這是嵌入與引用的問題,和它的混亂的MongoDB的新用戶的公共源。有一個簡單的經驗法則適用於大多數架構設計方案:嵌入時,子對象總是出現在父對象的上下文中。否則,將子對象存儲在單獨的集合中。
嵌入或引用它取決於應用程序。假設您正在MongoDB中構建一個存儲博客文章和評論的簡單應用程序。如果評論總是出現在博客文章中,並且他們不需要以任意方式進行排序(按發佈日期,評論排名等上),然後嵌入很好。但是,如果您希望能夠顯示最近的評論,無論他們出現在哪個帖子上,那麼您都需要參考。嵌入可能會帶來輕微的性能優勢,但引用更加靈活。
許多一對多
在RDBMS中,你可以使用一個連接表來表示許多一對多的關係;在MongoDB中,你使用數組鍵。例如,每個產品都包含一個類別ID的數組,產品和類別都有自己的集合。如果你有兩個簡單的類文件
{ _id: ObjectId("4d6574baa6b804ea563c132a"),
title: "Epiphytes"
}
{ _id: ObjectId("4d6574baa6b804ea563c459d"),
title: "Greenhouse flowers"
}
則屬於這兩類產品將是這樣的:
{ _id: ObjectId("4d6574baa6b804ea563ca982"),
name: "Dragon Orchid",
category_ids: [ ObjectId("4d6574baa6b804ea563c132a"),
ObjectId("4d6574baa6b804ea563c459d") ]
}
相關問題
- 1. Mongodb在集合之間移動文檔後崩潰
- 2. 如何使關係集合之間3
- 3. 關係更新Mongodb文檔
- 4. 當你有集合之間的關係時,mongodb是如何擴展的?
- 5. 鋰的mongodb模型之間的關係
- 6. 集合之間的MongoDB值傳播
- 7. MongoDB:集合中的所有文檔
- 8. 文檔在一個集合的MongoDB
- 9. MongoDB集合中的唯一文檔
- 10. 如何使用mongodb中的_id在集合之間建立一對多關係?
- 11. MongoDB的:找到日期範圍之間唯一的文檔集合在
- 12. mongoDB從關係集合中選擇
- 13. 設計MongoDB集合vs關係方法
- 14. 查詢MongDB與集合之間的間接關係
- 15. mongodb:使用嵌套文檔或單獨的引用集合
- 16. MongoDB預分配封頂集合中文檔的空間
- 17. 有關文檔和子文檔的mongodb的體系結構
- 18. MongoDB:將引用文檔的集合作爲子文檔複製
- 19. 合併子文檔主文檔與MongoDB的聚集
- 20. MongoDB模式設計。另一個集合或子文檔?
- 21. 集合關係
- 22. 如何在集合中的元素之間創建關係
- 23. 通用集合之間的對應關係
- 24. 關於MongoDB文檔
- 25. 如何使用文檔ID從mongoDB集合中刪除文檔?
- 26. yii2-mongodb:我怎樣才能使兩個集合之間有很多或有一個關係
- 27. MongoDB聚合關係計數關係
- 28. 檢查在不同的集合MongoDB的聚集存在文檔
- 29. 或地方之間的關係
- 30. 設計Couchbase/CouchDB中文檔之間的關係?
這是一個很常見的問題,谷歌搜索一點點就會讓你的閱讀300個鏈接至少;比任何人都可以提供一個答案。你如何關聯太依賴於你的數據和訪問模式,因爲這個問題在當前語境中太模糊了 – Sammaye
你是對的,許多關係都沒有被mongodb文檔所觸及。如果你在關係模型中有這樣的關係,那麼當使用非關係數據庫時它可能會發生相當大的變化。爲了獲得幫助,你必須解釋你的模型。 – citykid
http://stackoverflow.com/questions/9475286/how-to-convert-many-to-many-relation-form-sql-to-mongodb-colllection – citykid