2013-07-09 56 views
1

为了学习目的,我构建了一个具有基本功能的应用程序。这是我第一次使用MongoDB,我想知道我的数据模型是否合理,或者我是否应该以不同的方式进行建模。在MongoDB中存储日期数组

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

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

我的数据模型看起来像这样。这有意义吗? 我特别想知道日期数组 - 这是正确的路吗? (对数阵列可能会变得相当长)

{ 
    _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") 
      ] 
     } 
    ] 
} 
+1

不知道更多关于如何使用数据,“日志”更新频率等信息,无法提供有用的反馈。你有什么可能是完美的。 – WiredPrairie

回答

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/