時系列コレクション
Overview
このガイドでは 、 MongoDB PHPライブラリを使用して時系列コレクションを作成し、操作する方法を説明します。 これらのコレクションには、次のコンポーネントで構成される時系列データが保存されます。
測定値
測定のタイムスタンプ
測定を説明するメタデータ
次の表では、時系列データを保存できるサンプル状況について説明しています。
状況 | 測定値 | Metadata |
---|---|---|
業種別の月間売上の記録 | USD 建てでの収益 | 会社、国 |
気象変化の追跡 | 降量レベル | ロケーション、センサータイプ |
家一軒の価格の変動を記録する | 月額料金 | ロケーション、通貨 |
時系列コレクションの作成
重要
時系列コレクション用のサーバー バージョン
時系列コレクションを作成して操作するには、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マニュアルの データベースを参照してください。
時系列データの挿入
時系列コレクションにデータを挿入するには、 MongoDB\Collection::insertOne()
またはMongoDB\Collection::insertMany()
メソッドを使用し、挿入された各ドキュメントで測定値、タイムスタンプ、メタデータを指定します。
Tip
コレクションにドキュメントを挿入する方法の詳細については、「 ドキュメントの挿入 」ガイドを参照してください。
例
この例では、ニューヨーク市の降量データを、 時系列コレクションの作成例で作成された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 ドキュメント
このガイドで言及されているメソッドについて詳しくは、次のAPIドキュメントを参照してください。