時系列データ
Overview
このガイドでは、 Java Reactive Streams ドライバーを使用して時系列データを保存し、操作する方法を学習します。
時系列データは、次のコンポーネントで構成されています。
測定値
測定のタイムスタンプ
測定を説明するメタデータ
次の表では、時系列データを保存できるサンプル状況について説明します。
状況 | 測定値 | Metadata |
---|---|---|
業種別の月間売上の記録 | USD 建てでの収益 | 会社、国 |
気象変化の追跡 | 降量レベル | ロケーション、センサータイプ |
家一軒の価格の変動を記録する | 月額料金 | ロケーション、通貨 |
時系列コレクションの作成
重要
時系列コレクション用のサーバー バージョン
時系列コレクションを作成して操作するには、MongoDB Server 5.0以降を実行している配置に接続する必要があります。
時系列データを保存するには、時系列コレクションを作成します。 時系列コレクションを作成するには、次のパラメータを createCollection()
メソッドに渡します。
作成する新しいコレクションの名前
メソッドで TimeseriesOptions が設定された CreateCollectionOptions
timeSeriesOptions()
オブジェクト
次の例では、 timeField
オプションを"timestamp"
フィールドに設定して、 fall_weather
データベースにoctober2024
という名前の時系列コレクションを作成します。
MongoDatabase database = mongoClient.getDatabase("fall_weather"); TimeSeriesOptions tsOptions = new TimeSeriesOptions("timestamp"); CreateCollectionOptions collectionOptions = new CreateCollectionOptions().timeSeriesOptions(tsOptions); database.createCollection("october2024", collectionOptions);
時系列コレクションが正常に作成されたことを確認するには、データベースでlistCollections()
メソッドを実行し、結果を出力します。
ListCollectionsPublisher<Document> listCollectionsPublisher = database.listCollections(); Flux.from(listCollectionsPublisher) .doOnNext(System.out::println) .blockLast();
Document{{name=october2024, type=timeseries, options=Document{{timeseries=Document{{timeField=timestamp, granularity=seconds, bucketMaxSpanSeconds=3600}}}}, info=Document{{readOnly=false}}}} ...
時系列データの保存
時系列コレクションにデータを挿入するには、 insertOne()
またはinsertMany()
メソッドを使用し、挿入された各ドキュメントで測定値、タイムスタンプ、メタデータを指定します。
Tip
コレクションにドキュメントを挿入する方法の詳細については、「 ドキュメントの挿入 」ガイドを参照してください。
例
次の例では、ニューヨーク市の温度データを、 時系列コレクションの作成例で作成されたoctober2024
時系列コレクションに挿入します。 各ドキュメントには、次のフィールドが含まれています。
temperature
、温度測定値を華氏単位で保存location
、場所のメタデータを保存するtimestamp
は、測定コレクションの時間を保存します
MongoCollection<Document> collection = database.getCollection("october2024"); // Temperature data for October 1, 2024 Document temperature1 = new Document("temperature", 54) .append("location", "New York City") .append("timestamp", new Date(1727755200000L)); // Temperature data for October 2, 2024 Document temperature2 = new Document("temperature", 55) .append("location", "New York City") .append("timestamp", new Date(1727841600000L)); Publisher<InsertManyResult> insertPublisher = collection.insertMany(Arrays.asList(temperature1, temperature2)); Mono.from(insertPublisher).block();
時系列データのクエリ
時系列コレクションに保存されているデータをクエリするには、他のコレクションに対して読み取りまたは集計操作を実行するときに使用するのと同じ構文と規則を使用します。 これらの操作の詳細については、「追加情報」セクションを参照してください。
詳細情報
このガイドで言及されている概念の詳細については、次の MongoDB Server マニュアル エントリを参照してください。
読み取り操作の実行の詳細については、「 MongoDBからのデータの読み取り 」を参照してください。
集計操作の実行の詳細については、「集計フレームワークガイド」を参照してください。
API ドキュメント
このガイドで言及されているメソッドについて詳しくは、次のAPIドキュメントを参照してください。