Docs Menu
Docs Home
/ / /
Ruby ドライバー
/

時系列データ

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

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

  • 測定値

  • 測定のタイムスタンプ

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

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

状況
測定値
Metadata

業種別の月間売上の記録

USD 建てでの収益

会社、国

気象変化の追跡

降量レベル

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

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

月額料金

ロケーション、通貨

時系列コレクションを作成するには、コレクションの仕様を含むオプション ハッシュを渡す必要があります。時系列コレクションには次の仕様を指定できます。

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

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

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

  • :bucketMaxSpanSeconds: 同じバケット内のタイムスタンプ間の最大時間を設定する。

  • :bucketRoundingSeconds: MongoDBが新しいバケットの最小タイムスタンプを設定するときに切り捨てる秒数を設定します。 :bucketMaxSpanSeconds と等しくなければなりません。

これらのパラメータの詳細については、 MongoDB Serverマニュアル エントリの コマンドで、「 コマンド フィールド 」を参照してください。create

次の例では、Collection#create メソッドを使用して、:timeField` オプションを "timestamp" に設定して october2024 という名前の時系列コレクションを作成します。

client = Mongo::Client.new('<connection string>', database: 'weather')
collection_name = 'october2024'
time_series_options = { timeField: 'timestamp' }
database = client.database
database.command(
create: collection_name,
timeseries: time_series_options
)

コレクションが正常に作成されたことを確認するには、次のコードに示すように、データベース内のすべてのコレクションのリストを出力し、コレクション名でフィルタリングします。

collections = database.list_collections(filter: { name: 'october2024' }).to_a
puts collections
[
{
"name": "october2024",
"type": "timeseries",
"options": {
"timeseries": {
"timeField": "timestamp",
"granularity": "seconds",
"bucketMaxSpanSeconds": 3600
}
},
"info": {
"readOnly": false
}
}
]

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

ドキュメントの挿入の詳細については、 ドキュメントの挿入ガイドをご覧ください。

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

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

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

  • timestampは、測定タイムスタンプを保存します

client = Mongo::Client.new('<connection string>', database => 'your_db')
collection = client[:october2024]
document_list = [
{ temperature: 77, location: "New York City", timestamp: DateTime.new(2024, 10, 22, 6, 0, 0) },
{ temperature: 74, location: "New York City", timestamp: DateTime.new(2024, 10, 23, 6, 0, 0) }
]
collection.insert_many(document_list)

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

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

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

戻る

Data Formats

項目一覧