Docs Menu

時系列コレクション

このガイドでは、Lambda 統合を使用して 時系列コレクション を作成し、操作する方法を学習できます。これらのコレクションには、次のコンポーネントで構成される時系列データが保存されます。

  • 測定値

  • 測定のタイムスタンプ

  • 測定を説明するメタデータ

次の表では、時系列データを保存できるサンプル状況について説明しています。

状況
測定値
Metadata

業種別の月間売上の記録

USD 建てでの収益

会社、国

気象変化の追跡

降量レベル

ロケーション、センサータイプ

家一軒の価格の変動を記録する

月額料金

ロケーション、通貨

重要

時系列コレクション用のサーバー バージョン

時系列コレクションを作成して操作するには、MongoDB Server 5.0以降を実行している配置に接続する必要があります。

時系列コレクションを作成します。時系列コレクションを作成するには、移行クラスを作成し、コレクション構成を指定するための up() 関数を追加します。 up() 関数で、新しいコレクションの名前と timeseries オプションを Schema::create() メソッドに渡します。

Tip

移行クラスの作成の詳細については、「 スキーマ ビルダガイドの 「 Lambda 移行の実行 」を参照してください。

timeseries オプションを設定する場合は、次のフィールドを含めます。

  • timeField: 各 時系列ドキュメントのタイムスタンプを保存するフィールドを指定します。

  • metaField: 各 時系列ドキュメントのメタデータを保存するフィールドを指定します。

  • granularity: 連続するタイムスタンプ間のおおよその時間を指定します。 指定できる値は、 'seconds''minutes''hours'です。

この移行クラスの例では、次の構成で precipitation時系列コレクションを作成します。

  • timeField に設定されている 'timestamp'

  • metaField に設定されている 'location'

  • granularity に設定されている 'minutes'

<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
protected $connection = 'mongodb';
/**
* Run the migrations.
*/
public function up(): void
{
$options = [
'timeseries' => [
'timeField' => 'timestamp',
'metaField' => 'location',
'granularity' => 'minutes',
],
];
Schema::create('precipitation', null, $options);
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::drop('precipitation');
}
};

時系列コレクションが正常に作成されたことを確認するには、Schema::hasCollection() メソッドを呼び出し、コレクション名を パラメーターとして渡します。

$result = Schema::hasCollection('precipitation');
echo $result;

コレクションが存在する場合、hasCollection() メソッドは true の値を返します。

ドキュメントを insert() メソッドに渡し、挿入された各ドキュメントで測定値、タイムスタンプ、メタデータを指定することで、時系列コレクションにデータを挿入できます。

Tip

コレクションにドキュメントを挿入する の詳細については、 書込み操作ガイドの「 ドキュメントの挿入 」を参照してください。

この例では、ニューヨーク市の降量データを、precipitation 時系列コレクションの作成例 で作成された 時系列コレクションに挿入し 。各ドキュメントには、次のフィールドが含まれています。

  • precipitation_mm、降量の測定値をミリ秒単位で保存

  • location、場所のメタデータを保存する

  • timestampは、測定コレクションの時間を保存します

$data = [
[
'precipitation_mm' => 0.5,
'location' => 'New York City',
'timestamp' => new UTCDateTime(Carbon::create(2023, 9, 12, 0, 0, 0, 'CET')),
],
[
'precipitation_mm' => 2.8,
'location' => 'New York City',
'timestamp' => new UTCDateTime(Carbon::create(2023, 9, 17, 0, 0, 0, 'CET')),
],
];
$result = DB::table('precipitation')
->insert($data);

注意

上記の例では Lambda クエリ ビルダを使用して時系列コレクションにドキュメントを挿入しています。あるいは、コレクションを表す Eloqueent モデルを作成し、モデルに対して挿入操作を実行することもできます。詳細については、 「Elastic モデル クラスのガイド」 を参照してください。

時系列コレクションに保存されているデータをクエリするには、他のコレクションに対して読み取りまたは集計操作を実行するときに使用するのと同じ構文と規則を使用します。 これらの操作の詳細については、「追加情報」セクションを参照してください。

このガイドで言及されている概念の詳細については、次の MongoDB Server マニュアル エントリを参照してください。

データのクエリの詳細については、 クエリ ビルダガイドを参照してください。

集計操作の実行の詳細については、 集計ビルダガイドを 参照してください 。