0

我是非关系数据库的新手,因此我想知道如何为我的数据建模。我的项目是一个简单的待办事项应用程序,其中包含项目和任务。请参阅下文了解我目前的做法,并让我知道它是否正确或我可以做得更好:

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"
          }]
  }
4

1 回答 1

2

假设projects实际上是集合名称,那么这看起来不错,如果不是,那么为每个项目制作一个文档并使用user_id某种方式将它们链接在一起可能会更高效。

您可能想在这里记住的一件事是在特定时间段内您获得了多少新任务或任务更新。这样做的一个原因是,如果您的子文档tasks随着时间的推移持续增长,您可能会面临某些碎片问题(http://www.10gen.com/presentations/storage-engine-internals可以解释更多),如果这成为问题(我非常怀疑很多)你可以使用2大小分配的力量:http: //docs.mongodb.org/manual/reference/command/collMod/#usePowerOf2Sizes

但是,总的来说,这似乎是正确的。

于 2013-04-11T14:26:24.833 回答