時系列コレクション
Overview
このガイドでは、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'
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()
メソッドに渡し、挿入された各ドキュメントで測定値、タイムスタンプ、メタデータを指定することで、時系列コレクションにデータを挿入できます。
例
この例では、ニューヨーク市の降量データを、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 マニュアル エントリを参照してください。
データのクエリの詳細については、 クエリ ビルダガイドを参照してください。