Docs 菜单
Docs 主页
/ / /
C 驱动程序
/

时间序列数据

在此页面上

  • Overview
  • 创建时间序列集合
  • 存储时间序列数据
  • 查询时间序列数据
  • 更多信息

在本指南中,您可以学习;了解如何使用C驾驶员存储时间序列数据并交互。

时间序列数据由以下部分组成:

  • 测量数量

  • 测量的时间戳

  • 描述测量的元数据

下表描述了可以存储时间序列数据的示例情况:

情况
测量数量
Metadata

按行业记录月度销售额

收入(美元)

公司、国家/地区

追踪天气变化

降水量

位置、传感器类型

记录房价波动

月租价格

位置、货币

重要

时间序列集合的服务器版本

要创建时间序列集合并与之交互,必须连接到运行 MongoDB Server 5.0或更高版本的部署。

您可以创建时间序列集合来存储时间序列数据。要创建时间序列集合,请将以下参数传递给 mongoc_database_create_collection() 函数:

  • 要在其中创建集合的数据库

  • 要创建的新集合的名称

  • 指定 timeField 选项的 timeseries对象

以下示例在 fall_weather数据库中创建名为 october2024 的时间序列集合,并将 timeField 选项设立为 "timestamp" 字段:

// Initialize the MongoDB C Driver
mongoc_init ();
// Create a new client instance
mongoc_client_t *client = mongoc_client_new ("<connection string>");
// Get a handle on the database
mongoc_database_t *database = mongoc_client_get_database (client, "fall_weather");
// Create options for the time series collection
bson_t *opts = BCON_NEW (
"timeseries", "{",
"timeField", BCON_UTF8 ("timestamp"),
"}");
// Create the time series collection
bson_error_t error;
mongoc_collection_t *collection = mongoc_database_create_collection (database, "october2024", opts, &error);
if (!collection) {
fprintf(stderr, "Error creating collection: %s\n", error.message);
}
bson_destroy (opts);

要验证是否已成功创建时间序列集合,请对 fall_weather数据库运行mongoc_database_find_collections_with_opts() 函数并打印结果:

// List collections in the database
mongoc_cursor_t *cursor = mongoc_database_find_collections_with_opts (database, NULL);
const bson_t *doc;
while (mongoc_cursor_next (cursor, &doc))
{
char *str = bson_as_canonical_extended_json (doc, NULL);
printf ("%s\n", str);
bson_free (str);
}
// Check for cursor errors
if (mongoc_cursor_error (cursor, &error))
{
fprintf (stderr, "Cursor error: %s\n", error.message);
}
mongoc_cursor_destroy (cursor);
{ "name" : "october2024", "type" : "timeseries", "options" : { "timeseries" : { "timeField" : "timestamp", "granularity" : "seconds", "bucketMaxSpanSeconds" : { "$numberInt" : "3600" } } }, "info" : { "readOnly" : false } }
...

您可以使用 mongoc_collection_insert_one()mongoc_collection_insert_many() 函数,并在每个插入的文档中指定测量值、时间戳和元数据,从而将数据插入到时间序列集合中。

要学习;了解有关在集合中插入文档的更多信息,请参阅插入文档指南。

以下示例将纽约市温度数据插入到october2024 创建时间序列集合示例中创建的 时间序列集合中。每个文档包含以下字段:

  • temperature,以华氏度为单位存储温度测量值

  • location,用于存储位置元数据

  • timestamp,其中存储了测量集合的时间

const bson_t *insert_doc = BCON_NEW (
"temperature", BCON_DOUBLE (70.0),
"location", "{", "city", BCON_UTF8 ("New York"), "}",
"timestamp", BCON_DATE_TIME (1633046400000));
if (!mongoc_collection_insert_one (collection, insert_doc, NULL, NULL, &error)) {
fprintf(stderr, "Error inserting document: %s\n", error.message);
}

您可以使用与对其他集合执行读取或聚合操作时相同的语法和约定来查询时间序列集合中存储的数据。 要学习;了解有关这些操作的更多信息,请参阅“其他信息”部分。

要学习;了解有关本指南中提到的概念的更多信息,请参阅以下MongoDB Server手册条目:

要学习;了解有关执行读取操作的更多信息,请参阅从MongoDB读取数据。

要学习;了解有关执行聚合操作的更多信息,请参阅《使用聚合转换数据》指南。

要学习;了解有关本指南中提及的函数的更多信息,请参阅以下API文档:

后退

数据库和collection