时间序列数据
概述
在本指南中,您可以学习如何使用 C++ 驱动程序存储和交互 时间序列数据。
时间序列数据由以下组件组成
测量量
测量的时间戳
描述测量的元数据
以下表格描述了您可以存储时间序列数据的示例情况
情况 | 测量量 | 元数据 |
---|---|---|
按行业记录月销售额 | 美元收入 | 公司,国家 |
跟踪天气变化 | 降水量 | 位置,传感器类型 |
记录房价波动 | 每月租金价格 | 位置,货币 |
创建时间序列集合
重要
时间序列集合的服务器版本
要创建和交互时间序列集合,您必须连接到运行MongoDB服务器5.0或更高版本的部署。
您可以通过以下操作创建时间序列集合以存储时间序列数据:
创建一个BSON文档,指定您的时间序列集合的属性。
调用
create_collection()
方法,并将集合名称和时间序列BSON文档作为参数传递。
示例
此示例创建名为sept2023
的时间序列集合,在precipitation
数据库中,配置如下:
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());
要验证您是否成功创建了时间序列集合,请在数据库上运行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文档