MongoDB时间序列聚合

时间:2017-06-22 07:12:04

标签: mongodb mapreduce aggregation-framework

我使用MongoDB来存储时间序列数据,使用类似于"面向文档的设计"这里解释:[http://blog.mongodb.org/post/65517193370/schema-design-for-time-series-data-in-mongodb][1] 数据稀少,不是周期性的;示例如下:

    {
        "_id" : ObjectId(),
        "sensor_hw" : "somesensor",
        "day" : ISODate("2017-06-22T00:00:00Z"),
        "0" : {  // hour
                 "0" : {  // minute
                          "0": [1, 2, 3],  //second: measures [x, y, z]
                          "1": [1, 2, 3],
                          "2": [1, 2, 3],
                          ...
                 },  
                 "1" : {
                          "0": [1, 2, 3],
                          "1": [1, 2, 3],
                          "2": [1, 2, 3],
                          ...
                 },  
                 ...
        },
        "1" : {  // hour
                 "2" : {  // minute
                          "3": [1, 2, 3],  //second
                          "10": [1, 2, 3],
                          "15": [1, 2, 3],
                          ...
                 },  
                 ...
        },
                .
                .
                .
   }

我想直接用mongodb对这些时间序列进行聚合,以获得一个最终可以限制在时间范围内的展平结构,类似于:

{
    timestamp:  ISODate("2017-06-22T00:00:01Z"),
    x: 1,
    y: 2,
    z: 3
},
...
{
    timestamp:  ISODate("2017-06-22T01:02:03Z"),
    x: 1,
    y: 2,
    z: 3
}

最有效的方法是什么?

0 个答案:

没有答案