我使用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
}
最有效的方法是什么?