2012-11-05 41 views
2

我有一個最近正在使用MongoDB的項目。基本上,我的網站的核心元素是「項目」。每個項目將包含一個嵌套的「字符串」對象,其中將包含大量的字符串...因此,每個項目都相當龐大,可以接近兆字節或更多。因此,我希望將這些項目放在自己的收藏中。如何在MongoDB中存儲屬於多個其他對象的對象?

我遇到的問題是我不確定如何將用戶分配給項目。如果用戶包含他們註冊的項目列表,或者項目是否應包含用戶列表?我應該什麼時候選擇其中一個?還有更好的方法嗎? (我有一段時間沒有碰到MongoDB,所以我有點生疏)

回答

1

我不能立即想到兩者之間的任何嚴重的停止差異。我想保持它的用戶側可能是更容易:因爲你只需要修改該用戶的行,這將很可能僅具有原子鎖也無妨

  • 用戶從項目退訂,不像項目排多個用戶可能會嘗試同時取消訂閱。因此,用戶端可能會做出更好的更新和併發性。
  • 上一點也適用於訂閱項目的用戶。
  • 用戶刪除,你只是刪除用戶的行...簡單

因此,考慮這些事情立即浮現在腦海,我可能會選擇在用戶中嵌入項目。

0

看看http://www.mongodb.org/display/DOCS/Schema+Design。適用於您的案例的指導原則是

通常,對於實體之間的「包含」關係,應該選擇嵌入。不使用鏈接時使用鏈接會導致數據重複。

如果用戶可以在多個項目的註冊過程,一個項目可以註冊多個用戶,似乎最好有項目和用戶單獨集合。

相關問題