首页 > 解决方案 > 如何构建我的时间序列 mongodb 文档和条目

问题描述

我将在 MongoDB 数据库中存储一些数字资产的 OHLCV(开盘、高盘、低盘、收盘、成交量)数据。

这些是将进入数据库的每个条目的属性:

首先,将有 5 个时间范围。

为此,我认为将这些记录中的每一个放在单独的集合中是个好主意,所以我有 5 个集合:myassetdb.5m, myassetdb.15m, myassetdb.1h, myassetdb.4h,myassetdb.1d

这是一个好主意吗?

然后按以下方式设计每个文档条目:

{
    "_id": {
        "$oid": "5f084269ef9c1e67f3bc8671"
    },
    "asset": "BTC/EUR",
    "timeframe": "5m",
    "stream": {
        "timestamp": {
            "$timestamp": {
                "t": 1,
                "i": 1594377598
            }
        },
        "open": {
            "$numberDecimal": "8417.5"
        },
        "high": {
            "$numberDecimal": "8418.5"
        },
        "low": {
            "$numberDecimal": "8401.2"
        },
        "close": {
            "$numberDecimal": "8411.5"
        },
        "volume": {
            "$numberDecimal": "14.69836761"
        }
    },
    "date": {
        "$date": "2020-07-10T10:39:58+00:00"
    }
}

这里重要的是asset namethetimeframestream。重要的是,以后我可以根据时间继续添加具有最新数据的条目。通常,它将是一种类似于 CSV 流程的结构。事情如下所示

timestamp,open,high,low,close,volume,pair,timeframe
1592479800,8407.6,8409,8407.6,8409,9.07373197,BTC/EUR,5m
1592480100,8409,8411.3,8408.7,8410.3,7.2545515,BTC/EUR,5m
1592480400,8410.4,8410.4,8403.2,8405.9,12.64222715,BTC/EUR,5m
1592480700,8405.9,8406,8394.2,8403.1,7.87145576,BTC/EUR,5m

所以我可以在数据流中添加新条目

timestamp,open,high,low,close,volume,pair,timeframe
1592479200,8417.5,8418.5,8401.2,8411.5,14.69836761,BTC/EUR,5m
1592479500,8411.5,8411.7,8407.6,8407.6,3.79545517,BTC/EUR,5m
(new data above this line)..................................
1592479800,8407.6,8409,8407.6,8409,9.07373197,BTC/EUR,5m
1592480100,8409,8411.3,8408.7,8410.3,7.2545515,BTC/EUR,5m
1592480400,8410.4,8410.4,8403.2,8405.9,12.64222715,BTC/EUR,5m
1592480700,8405.9,8406,8394.2,8403.1,7.87145576,BTC/EUR,5m

不要误会我的意思,我在此处包含 CSV 示例只是为了展示我的数据需求。我只需要能够基于date, theasset和 the访问和更新timeframe

我的数据结构适合这种数据库工作流程吗?整个事情看起来像下面的图片。

在此处输入图像描述

只是为了澄清,我添加了这一部分。我是否需要某种嵌套,或者数据是否平坦,如下图所示:

在此处输入图像描述

标签: databasemongodbdata-structures

解决方案


推荐阅读