我是非关系型数据库的新手,因此我想知道如何对数据进行建模。我的项目是一个简单的待办事项应用程序,具有项目和任务。请参阅下文,了解我目前是如何做到这一点并让我知道它是否正确或我可能做得更好:
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"
}]
}
答案 0 :(得分:2)
假设projects
实际上是集合名称,那么这看起来不错,如果没有,那么为每个项目创建一个文档并使用某种user_id
将它们链接在一起可能会更高效。< / p>
您可能想要记住的一件事是在一段时间内完成的任务有多少新任务或更新。这样做的一个原因是因为如果您的子文档tasks
随着时间的推移而增长,您可能会遇到某些碎片问题(http://www.10gen.com/presentations/storage-engine-internals可以解释更多),如果这成为问题(我怀疑它会很多),您可以使用2大小分配的权力:http://docs.mongodb.org/manual/reference/command/collMod/#usePowerOf2Sizes
然而,总的来说这似乎是正确的。