时间戳作为时间序列数据库的mongodb中的键

时间:2017-01-05 17:01:33

标签: mongodb time-series sensor iot bigdata

我想使用mongodb作为timeseries数据库并通过timestamp + id查询。

Mongodb显示了一种存储数据的方法here

{
  timestamp_hour: ISODate("2013-10-10T23:00:00.000Z"),
  ID: “System1”,
  values: {
    0: { 0: 999999, 1: 999999, …, 59: 1000000 },
    1: { 0: 2000000, 1: 2000000, …, 59: 1000000 },
    …,
    58: { 0: 1600000, 1: 1200000, …, 59: 1100000 },
    59: { 0: 1300000, 1: 1400000, …, 59: 1500000 }
  }
}

但我有多个值,每个值都有一个时间戳,它不是周期性的。 数据有一段时间延迟或几天没有来。 所以我不想用我的小时0-24和我的分钟0-59。 我可以使用我测量的时间戳吗?我的文档中的每个值都具有相同的时间戳,因此如果value1有50个条目,则value2还有50个条目和相等的时间戳。

     {
          timestamp_hour: ISODate("2013-10-10T23:00:00.000Z"),
          ID: “System1”,
          values1: {
            "2013-10-10T22:00: {
         "2013-10-10T22:01:00.000Z": 999999, 
         "2013-10-10T22:02:00.000Z": 999999,
         "2013-10-10T22:03:00.000Z": 1000000 
                                },
            "2013-10-10T23:00:": { 
         "2013-10-10T23:01:00.000Z": 2000000,
         "2013-10-10T23:02:00.000Z": 2000000, 
                                 },
          }
         values2: {
            "2013-10-10T22:00: {
         "2013-10-10T22:01:00.000Z": 999999, 
         "2013-10-10T22:02:00.000Z": 999999,
         "2013-10-10T22:03:00.000Z": 1000000 
                                },
            "2013-10-10T23:00:": { 
         "2013-10-10T23:01:00.000Z": 2000000,
         "2013-10-10T23:02:00.000Z": 2000000, 
                                 },
         }
    }

1 个答案:

答案 0 :(得分:1)

您可以使用传入的时间戳存储您的值,并使用单独的 mongodb map-reduce进程来转换您的值并将其存储在您需要的粒度的不同集合中(例如,每小时,每日,每月)。另请参阅incremental map-reduce

你也可以发现这些帖子鼓舞人心: