Docs 菜单
Docs 主页
/ / /
PHP 库手册
/

时间序列集合

在此页面上

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

在本指南中,您可以学习;了解如何使用MongoDB PHP库创建时间序列集合并交互。 这些集合存储时间序列数据,由以下部分组成:

  • 测量数量

  • 测量的时间戳

  • 描述测量的元数据

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

情况
测量数量
Metadata

按行业记录月度销售额

收入(美元)

公司、国家/地区

追踪天气变化

降水量

位置、传感器类型

记录房价波动

月租价格

位置、货币

重要

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

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

您可以创建时间序列集合来存储时间序列数据。 要创建时间序列集合,请将选项大量传递给设置timeseries选项的 MongoDB\Database::createCollection()方法。 设置此选项时,请包含以下字段:

  • timeField:指定在每个时间序列文档中存储时间戳的字段。

  • metaField:指定每个时间序列文档中存储元数据的字段。

  • granularity:指定连续时间戳之间的大致时间。 可能的值为'seconds''minutes''hours'

此示例使用以下配置在precipitation数据库中创建sept2023时间序列集合:

  • timeField 设置为 'timestamp'

  • metaField 设置为 'location'

  • granularity 设置为 'minutes'

$db = $client->precipitation;
$options = [
'timeseries' => [
'timeField' => 'timestamp',
'metaField' => 'location',
'granularity' => 'minutes',
]
];
$collection = $db->createCollection('sept2023', $options);

要验证是否已成功创建时间序列集合,请对数据库调用MongoDB\Database::listCollections()方法并打印结果:

$cursor = $db->listCollections();
foreach ($cursor as $collectionInfo) {
print_r($collectionInfo) . PHP_EOL;
}
MongoDB\Model\CollectionInfo Object
(
[name] => sept2023
[type] => timeseries
[options] => Array
(
)
[info] => Array
(
)
)
MongoDB\Model\CollectionInfo Object
(
[name] => system.buckets.sept2023
[type] => collection
[options] => Array
(
)
[info] => Array
(
)
)

注意

MongoDB将与时间序列集合相关的系统数据存储在<database>.system.buckets命名空间中。 有关更多信息,请参阅MongoDB Server手册中的数据库.system.buckets

您可以使用MongoDB\Collection::insertOne()MongoDB\Collection::insertMany()方法将数据插入到时间序列集合中,并在每个插入的文档中指定测量值、时间戳和元数据。

提示

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

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

  • precipitation_mm,以毫米为单位存储降水量测量值

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

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

$collection = $db->sept2023;
$result = $collection->insertMany(
[
[
'precipitation_mm' => 0.5,
'location' => 'New York City',
'timestamp' => new MongoDB\BSON\UTCDateTime(1694829060000),
],
[
'precipitation_mm' => 2.8,
'location' => 'New York City',
'timestamp' => new MongoDB\BSON\UTCDateTime(1695594780000),
],
]
);

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

要了解有关本指南中提到的概念的更多信息,请参阅以下服务器手册条目:

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

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

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

后退

数据库和collection