Javascript 动态对象模式

Javascript 动态对象模式,javascript,node.js,mongoose,mongoose-schema,Javascript,Node.js,Mongoose,Mongoose Schema,我需要在mongodb中存储某些指标的高频、周期性时间序列数据(每5秒一次),因为常规方法太昂贵: { timestamp: ISODate("2013-10-10T23:06:37.000Z"), type: String, value: Number }, 我想写一个优化的,如前所述,文档如下所示: { timestamp_hour: ISODate("2013-10-10T23:06:00.000Z"), type: “memor

我需要在mongodb中存储某些指标的高频、周期性时间序列数据(每5秒一次),因为常规方法太昂贵:

   {
      timestamp: ISODate("2013-10-10T23:06:37.000Z"),
      type: String,
      value: Number
    },
我想写一个优化的,如前所述,文档如下所示:

{
  timestamp_hour: ISODate("2013-10-10T23:06:00.000Z"),
  type: “memory_used”,
  values: {
    0: 999999,
    …
    37: 1000000,
    38: 1500000,
    … 
    720: 2000000,
  }
}
在上面的模型中,我不是每5秒存储一个文档,而是每1小时存储一个文档,并将该特定时间内生成的所有数据作为键值对存储在“values”对象中

为了使文档大小尽可能小,并在获取数据时提高性能,我是否应该使用数组来存储值或动态对象,哪一个将为我提供最小的大小和最快的读取速度(我将需要在任何特定文档中读取值块)


如果我使用对象,如何为它定义模式,因为值的数量(在上面的示例中为720)不是常数,它可以更改。

一小时内有720个5秒的间隔。这种情况已经持续了很长时间,不会很快改变。至少在软件应用程序生命周期的上下文中,假设它是常量应该是安全的。这里您可能只是指
混合
,甚至是模式验证与
{strict:false}
并且根本不在架构中指定键。@Alexlex我的实际意思是5秒间隔不是常数,因此对象中的值可以小于或大于720。@BilalAlam,你的意思是不总是5秒,即每次都是随机间隔,还是不是每次记录5秒间隔,即,缺少一些间隔?不管是哪种方式,您认为它在无法控制密钥的数组中会如何工作?如果用户可以随时更改它,则它是随机的(不是加密随机的,而是不可预测的随机)。那阵列就不行了。数组中的键是严格递增的。