Docs 菜单
Docs 主页
/
MongoDB Manual
/

关于查询时间序列数据

在此页面上

  • 查询元字段
  • 查询 timeField
  • 块处理

MongoDB将具有匹配的元字段的文档分组,以优化时间序列数据的存储和查询延迟。您选择的 metaField对优化应用程序中的查询影响最大。

查询时间序列集合的方式与查询标准MongoDB集合的方式相同。有关示例查询和示例聚合管道,请参阅查询时间序列集合。有关查询最佳实践的列表,请参阅查询最佳实践。

对时间序列数据的查询通常关注集合中的单个时间序列。示例,考虑一个使用以下模式跟踪股票数据的时间序列集合:

{
_id: 573a1397f29313caabce8347,
"ticker": "MDB",
"timestamp": ISODate("2024-07-24T13:45:00.000Z"),
"price": 248.21,
"volume": 6930
}

该集合具有以下设置:

timeseries: {
timeField: "timestamp",
metaField: "ticker",
granularity: "seconds"
}

MongoDB对具有匹配ticker值的文档进行分组。服务器不必检查所有文档中所有字段的匹配项,只需对照metaField (在本例中为ticker )进行检查,即可将搜索范围缩小到唯一的时间序列。这符合预期的使用案例,即搜索单一股票的活动。搜索MongoDB股票(MDB) 信息的用户无需考虑Amazon (AMZN) 的搜索结果。

查询时间序列数据的第二个主要维度是时间。由于MongoDB会对具有相同metaField值和相近timeField值的文档进行分组,因此这将查询范围进一步缩小到范围存储桶。最近的事务保存在内存中,因此可以轻松地实时流数据。

从版本 8.0 开始,MongoDB 可以使用块处理来执行某些时间序列查询。这一性能改进利用数据“块”而不是单个值来处理查询。当使用时间序列集合时,块处理可提高查询执行速度和吞吐量。

MongoDB自动为符合条件的时间序列查询启用区块处理。您无法手动指定查询是否使用区块处理。要查看时间序列查询是否使用区块处理,请参阅解释计划输出中的stages

后退

分片集合