MongoDB中的时间序列数据

时间:2017-01-22 03:48:32

标签: mongodb

我在MongoDB中存储传感器和事物的时间序列数据,我按照UPDATE模型方法存储数据,下面是我存储的样本JSON

Schema Design for Time Series Data in MongoDB

JSON模型

  • 按小时列出的文档(精确地具有分钟和秒的数据)
  • phenomenonTime和thingsId将作为唯一键

示例

[
    {
        "id": "58808b1819f61",
        "phenomenonTime": "2017-01-19T5:00:00",
        "observations": {
            "0": {
                "0": {
                    "location": {
                        "coordinates": [
                            0.0066,
                            0.0009
                        ]
                    },
                    "temperature": 20,
                    "device_id_gateway": "",
                },
                "1": {
                    "location": {
                        "coordinates": [
                            -0.0003,
                            0.0032
                        ]
                    },
                    "temperature": 16,
                    "airSpeed": ""
                }, ............. so on 

现在报告我试图获取以下信息,但我没有通过这种方法获取数据

  • 此传感器在时间x(“2017-01-19T5:30:15”)的位置?
  • 跟踪传感器在时间x和y之间的移动,即时间间隔“2017-01-19T5:30:15”到“2017-01-19T8:24:23”

能帮助我了解如何获取此信息

一些相关问题

现在我从多个设备的一个网关获取数据但我可以有多个网关所以在这种情况下请建议应该是什么模型

  • 单个网关 - 多个设备
  • 多个网关 - 单个设备
  • 多个网关 - 多个设备

1 个答案:

答案 0 :(得分:0)

为此,您可以为每个数据提供文档(一次来自每个设备的数据)。要回答你的问题,

  1. 此传感器在时间x(“2017-01-19T5:30:15”)的位置? 您可以按时查询。

  2. 跟踪传感器在时间x和y之间的移动,即时间间隔“2017-01-19T5:30:15”到“2017-01-19T8:24:23”? Mongodb具有查询时间间隔的功能,然后您可以对其进行排序。

  3. 设计 - 忘记MYSQL,在mongodb中我认为最好的模式是每个数据请求一个文档。(模式是每个设备,网关更改),您可以保留网关和设备的ID并保存在相关文档中。