1

出于学习目的,我正在构建一个具有基本功能的应用程序。这是我第一次使用 MongoDB,我想知道我的数据模型是否有意义,或者我是否应该对它进行不同的建模。

基本上,这是应该发生的:

我有用户帐户,他们可以创建“任务”并执行它们。每次他们执行任务时,都应该记录时间戳。然后,他们可以查看日志(日志),其中显示了他们执行特定任务的所有日期。

我的数据模型看起来像这样。这有意义吗?我特别想知道日期数组 - 这是正确的方法吗?(log-Array 可能会变得很长)

{
    _id: "51d951922cf9f30200000004",
    user: "jon doe",
    password: "xxxxxxxxxx",
    tasks: [
        {
            name: "one task",
            log: [
                ISODate("2010-10-10T20:55:36Z"),
                ISODate("2011-10-10T20:55:36Z"),
                ISODate("2012-10-10T20:55:36Z")
            ]
        },
        {
            name: "another task",
            log: [
                ISODate("2010-10-10T20:55:36Z"),
                ISODate("2011-10-10T20:55:36Z"),
                ISODate("2012-10-10T20:55:36Z")
            ]
        },
        {
            name: "one last task",
            log: [
                ISODate("2010-10-10T20:55:36Z"),
                ISODate("2011-10-10T20:55:36Z"),
                ISODate("2012-10-10T20:55:36Z")
            ]
        }
    ]
}
4

1 回答 1

0

你所拥有的可能没问题。随着数组大小的增加,您可能会在复制大型数组时遇到一些延迟,但实际上并没有节省空间的日志替代方案。我唯一能想到的是嵌套文档。一旦尺寸很大,它可能会更新得稍微快一些,但它会占用更多空间并且不会那么好或可读性差。与其拥有一个包含日志的数组,不如拥有一个类似的文档

{ 0: ISODate("2010-10-10T20:55:36Z" , 
  1: ISODate("2010-10-10T20:55:36Z" , 
  2: ISODate("2010-10-10T20:55:36Z" }

等等。这将比在添加日志时创建一个全新的(更大的)数组更快,但也会占用更多空间。

如果有帮助,MongoDB 有一个关于数据建模的页面,其中包含一些您可能会觉得有用的链接。 http://docs.mongodb.org/manual/core/data-modeling/

于 2013-07-18T19:30:14.107 回答