如何在MongoDB中建模数据

How to model data in MongoDB?

本文关键字:建模 数据 MongoDB      更新时间:2023-09-26

我是非关系数据库的新手,因此我想知道如何建模我的数据。我的项目是一个简单的待办事项应用程序,有项目和任务。请看看我现在是怎么做的,让我知道这是正确的,或者我可以做得更好:

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

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

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

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