我有一个集合,其中每个文件看起来是这样的:MongoDB的“开卷”嵌套对象
{
_id: 'dev_id:datetime_hour',
data: {
0: {
0: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
1: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
2: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
59: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
}
},
1: {
0: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
1: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
2: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
59: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
}
}
}
我在这里已经简化,但其基本思想是:传感器数据存储每一秒,但捆绑一起按小时。 “数据”字段按分钟和每分钟索引按秒索引这些索引。因此,一个完整的小时数据将在嵌套数据字段中产生3600个条目。例如,要获取第一分钟和第三秒的传感器数据,我可以直接访问该对象:data.1.3
。
这种类型的模式是recommended for storing time series data by MongoDB。我的聚集管道
第1阶段是这样的:
db.raw_electric.aggregate(
[
// Stage 1
{
$match: {
_id: { $regex: /^r10a:/ },
datehour: {$gte: ISODate("2016-09-21T17:00:00"), $lte: ISODate("2016-09-21T19:00:00")}
}
}
]
);
是否有可能“开卷”的文件 - 类似你如何放松身心的阵列,这样我可以公开每个嵌套层的一个对象?
使用'$ unwind'操作符不能'展开'文档,它仅适用于数组。 – chridam
我知道...这就是为什么我正在寻找这种情况下的等价物/替代物。 –