【发布时间】:2019-02-16 03:55:58
【问题描述】:
我的架构实现受到本教程on official mongo site的影响
{
_id: String,
data:[
{
point_1: Number,
ts: Date
}
]
}
这基本上是为时间序列数据设计的模式,我将每个设备每小时的数据存储在单个文档的数组中。我创建了_id 字段组合设备ID,它正在发送数据和时间。例如,如果 ID 为xyz1234 的设备在2018-09-11 12:30:00 发送数据,那么我的_id 字段将变为xyz1234:2018091112。
如果该设备的那个小时的文档不存在,我将创建新文档,否则我只是将我的数据推送到 data 数组。
client.db('iot')
.collection('iotdata')
.update({_id:id},{$push:{data:{point_1,ts:date}}},{upsert:true});
现在我在进行聚合时遇到问题。我正在尝试获取这些类型的值
- 过去 24 小时内许多设备的最小
point_1值(按设备 ID 分组) - 过去 24 小时内许多设备的最大
point_1值(按设备 ID 分组) - 过去 24 小时内许多设备的平均
point_1按设备 ID 分组
我认为这是非常简单的聚合,然后我意识到设备 ID 不是直接的,而是与时间数据混合在一起,因此按设备 ID 对数据进行分组并不是那么直接。如何根据设备 ID 拆分 _id 和组?我已尽力将问题写得尽可能清楚,如果问题的任何部分不清楚,请在 cmets 中提问。
【问题讨论】:
标签: mongodb aggregation-framework