2013-04-11 35 views
0

我是非關係數據庫的新手,因此我想知道如何建模我的數據。我的項目是一個簡單的待辦事項應用程序,具有項目和任務。請參閱下面我現在是怎麼做的,讓我知道,如果它是正確的還是什麼我可以做的更好:如何在MongoDB中建模數據?

projects: [{ 
    _id: 23423423423, 
    name: projectName1, 
    tasks: [{ 
       _id: 3423423423423324, 
       title: "do something", 
       isCompleted: "false" 
      }, 
      { 
       _id: 23223423423324, 
       title: "do something else now", 
       isCompleted: "false" 
      }, 
      { 
       _id: 232234233423423, 
       title: "i have completed this", 
       isCompleted: "true" 
      }] 
    }, 
    { 
    _id: 2342123123, 
    name: projectName2, 
    tasks: [{ 
       _id: 3423423423422314, 
       title: "build this", 
       isCompleted: "false" 
      }, 
      { 
       _id: 2322342342234234, 
       title: "build something else now", 
       isCompleted: "false" 
      }, 
      { 
       _id: 2322342323423423, 
       title: "i have completed building this", 
       isCompleted: "true" 
      }] 
    } 

回答

2

假設projects實際上是集合名稱那麼這看起來不錯,如果沒有的話,可能更performant爲每個項目製作文檔,並使用某種user_id將它們鏈接在一起。

你可能想在這裏想到的一件事是在特定時間段內獲得的任務有多少新任務或更新。造成這種情況的原因之一是因爲如果你的子文檔tasks與時間一致地增長,你可能會面臨某些碎片問題(http://www.10gen.com/presentations/storage-engine-internals可以解釋更多),如果這變得有問題(我很懷疑它會),你可以使用2個尺寸分配的功率:http://docs.mongodb.org/manual/reference/command/collMod/#usePowerOf2Sizes

但是,一般來說這似乎是正確的。

+1

爲了補充說明,可能需要閱讀http://docs.mongodb.org/manual/core/data-modeling/,其中討論了MongoDB數據建模並在最後提供了示例模型的鏈接。 – 2013-04-11 14:47:23

+0

謝謝你們兩位的回答。 @James Wahlin,那個鏈接非常有用! – 2013-04-11 23:02:42

相關問題