Docs Menu

時系列データ

このガイドでは、 Scalaドライバーを使用して 時系列データ を保存し、操作する方法を学習できます。

時系列データは、次のコンポーネントで構成されています。

  • 測定値

  • 測定のタイムスタンプ

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

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

状況
測定値
Metadata

業種別の月間売上の記録

USD 建てでの収益

会社、国

気象変化の追跡

降量レベル

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

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

月額料金

ロケーション、通貨

重要

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

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

時系列データを保存するには、時系列コレクションを作成します。 時系列コレクションを作成するには、次のパラメータを createCollection()メソッドに渡します。

この例では、 fall_weatherデータベースに timeField オプションを "timestamp"フィールドに設定し、 metaField オプションを "location"フィールドに設定して、october2024時系列コレクションを作成します。

val database = mongoClient.getDatabase("fall_weather")
val tsOptions = TimeSeriesOptions("timestamp").metaField("location")
val collectionOptions = CreateCollectionOptions().timeSeriesOptions(tsOptions)
val createObservable = database.createCollection("october2024", collectionOptions)
Await.result(createObservable.toFuture(), Duration(10, TimeUnit.SECONDS))

時系列コレクションが正常に作成されたことを確認するには、データベースでlistCollections()メソッドを実行し、結果を出力します。

val listObservable = database.listCollections()
val list = Await.result(listObservable.toFuture(), Duration(10, TimeUnit.SECONDS))
val jsonSettings = JsonWriterSettings.builder().indent(true).build()
list.foreach(collection => {
println(collection.toJson(jsonSettings))
})
{
"name": "october2024",
"type": "timeseries",
"options": {
"timeseries": {
"timeField": "temperature",
"granularity": "seconds",
"bucketMaxSpanSeconds": 3600
}
},
"info": {
"readOnly": false
}
}
...

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

Tip

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

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

  • temperature、温度測定値を華氏単位で保存

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

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

val collection = database.getCollection("october2024")
val temperatures = Seq(
Document("timestamp" -> BsonDateTime(1727755200000L), "temperature" -> 54, "location" -> "New York City"),
Document("timestamp" -> BsonDateTime(1727841600000L), "temperature" -> 55, "location" -> "New York City"),
)
val insertObservable = collection.insertMany(temperatures)
Await.result(insertObservable.toFuture(), Duration(10, TimeUnit.SECONDS))

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

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

読み取り操作の実行の詳細については、「 データの読み取り 」を参照してください。

集計操作の実行の詳細については、「集計によるデータの変換 」ガイドを参照してください。

このガイドで言及されているメソッドについて詳しくは、次のAPIドキュメントを参照してください。