2011-08-07 31 views
7

我已經瀏覽了mongo網站上的大多數mongodb模式設計文章以及這裏的大多數問題。還有一個用例,我還沒有弄清楚。在查看這些教程時,他們通常會參考文章評論問題和產品/類別問題。在查詢帖子列表時,我想弄清楚如何建模一對多關係(作者到帖子)。下面是示例模式:如何在mongodb中設計作者/用戶模型的模式

Users: { 
    _id: ObjectID 
    Name: String 
    Email: String 
} 

Posts: { 
    _id: ObjectID 
    user_id: ObjectID 
    body: String 
    comments: [ 
     body: String 
    ] 
} 

現在,讓我們說你想運行最新的10個職位的查詢。一個非常簡單的查詢,但是現在你有可能每個人都有唯一的ObjectID指向用戶的帖子。現在,你應該如何完成獲取每個用戶的職位名稱和電子郵件。

  1. 你應該建立用戶的數組對象ID的從職位查詢,然後運行查詢db.users.find({_id:{$於:PostsUserIDArray}});在那之後你會使用你的應用程序邏輯來將正確的用戶信息與正確的帖子進行匹配嗎?

  2. 是否應該在帖子中保留一份數據。 I.E.將用戶標識,姓名和電子郵件保留在帖子表中。然後,當用戶更新這些信息以更新帖子中的所有信息時,只需要一個鉤子。

  3. 一個我自己或朋友都沒有想到的選項。

我感謝所有幫助,我試圖總結我的周圍蒙戈數據建模頭。

回答

2

對於我從MongoDB創建者看到的一些視頻,他們提倡第二種解決方案。如果你的用戶有更多的數據,而不僅僅是一個名字和電子郵件,並且當你顯示apost時只顯示姓名和電子郵件,那麼將它存儲在帖子中並不是很糟糕。因此,在查詢帖子時,您不必執行其他查詢。而且由於用戶通常不會每天更改自己的姓名,因此在更改姓名後對所有帖子運行更新會比顯示帖子時執行其他查詢以檢索信息更有效。

編輯:鏈接到一個視頻http://lacantine.ubicast.eu/videos/3-mongodb-deployment-strategies/

+0

謝謝,你有沒有被關閉,機會所有這些視頻的鏈接?我很想看一個他們談論這個的地方。 – rickharrison

+0

我使用其中一個視頻更新了我的帖子。 – TrexXx

+0

可能你應該考慮這篇文章 http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-part-1 – olyjosh