Overview
このガイドでは、 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 ドキュメント
このガイドで言及されているメソッドについて詳しくは、次のAPIドキュメントを参照してください。