时间序列数据
Overview
在本指南中,您可以学习;了解如何使用C++驾驶员存储时间序列数据并交互。
时间序列数据由以下部分组成:
测量数量
测量的时间戳
描述测量的元数据
下表描述了可以存储时间序列数据的示例情况:
情况 | 测量数量 | Metadata |
---|---|---|
按行业记录月度销售额 | 收入(美元) | 公司、国家/地区 |
追踪天气变化 | 降水量 | 位置、传感器类型 |
记录房价波动 | 月租价格 | 位置、货币 |
创建时间序列集合
重要
时间序列集合的服务器版本
要创建时间序列集合并与之交互,必须连接到运行 MongoDB Server 5.0或更高版本的部署。
您可以创建时间序列集合来存储时间序列数据。 要创建时间序列集合,请执行以下操作:
创建BSON文档,指定时间序列集合的属性。
调用
create_collection()
方法,并将集合名称和时间序列BSON文档作为参数传递。
例子
此示例使用以下配置在precipitation
数据库中创建sept2023
时间序列集合:
timeField
设置为"timestamp"
metaField
设置为"location"
granularity
设置为"minutes"
auto db = client["precipitation"]; auto ts_info = make_document( kvp("timeseries", make_document( kvp("timeField", "timestamp"), kvp("metaField", "location"), kvp("granularity", "minutes") ))); auto collection = db.create_collection("sept2023", ts_info.view());
要验证是否已成功创建time-series collection,请对数据库运行list_collections()
方法并打印结果:
auto cursor = db.list_collections(); for(auto&& doc : cursor) { std::cout << bsoncxx::to_json(doc) << std::endl; }
{ "name" : "sept2023", "type" : "timeseries", "options" : { "timeseries" : { "timeField" : "timestamp", "metaField" : "location", "granularity" : "minutes", "bucketMaxSpanSeconds" : 86400 } }, "info" : ... }
存储时间序列数据
您可以使用insert_one()
或insert_many()
方法将数据插入到时间序列集合中,并在每个插入的文档中指定测量值、时间戳和元数据。
提示
要学习;了解有关在集合中插入文档的更多信息,请参阅插入文档指南。
例子
此示例将纽约市降水数据插入到创建时间序列集合示例中创建的sept2023
时间序列集合中。 每个文档包含以下字段:
precipitation_mm
,以毫米为单位存储降水量测量值location
,用于存储位置元数据timestamp
,其中存储了测量集合的时间
auto collection = db["sept2023"]; std::vector<bsoncxx::document::value> ts_data; ts_data.push_back(make_document(kvp("precipitation_mm", 0.5), kvp("location", "New York City"), kvp("timestamp", bsoncxx::types::b_date{std::chrono::milliseconds{1694829060000}}))); ts_data.push_back(make_document(kvp("precipitation_mm", 2.8), kvp("location", "New York City"), kvp("timestamp", bsoncxx::types::b_date{std::chrono::milliseconds{1695594780000}}))); auto result = collection.insert_many(ts_data);
查询时间序列数据
您可以使用与对其他集合执行读取或聚合操作时相同的语法和约定来查询时间序列集合中存储的数据。 要查找有关这些操作的更多信息,请参阅“其他信息”部分。
更多信息
要了解有关本指南中提到的概念的更多信息,请参阅以下服务器手册条目:
要学习;了解有关执行读取操作的更多信息,请参阅从MongoDB读取数据。
要学习;了解有关执行聚合操作的更多信息,请参阅《使用聚合转换数据》指南。
API 文档
要学习;了解有关本指南中提到的方法的更多信息,请参阅以下API文档: