時系列データ
Overview
このガイドでは、 Cドライバーを使用して 時系列データ を保存し、操作する方法を学習できます。
時系列データは、次のコンポーネントで構成されています。
測定値
測定のタイムスタンプ
測定を説明するメタデータ
次の表では、時系列データを保存できるサンプル状況について説明します。
状況 | 測定値 | Metadata |
---|---|---|
業種別の月間売上の記録 | USD 建てでの収益 | 会社、国 |
気象変化の追跡 | 降量レベル | ロケーション、センサータイプ |
家一軒の価格の変動を記録する | 月額料金 | ロケーション、通貨 |
時系列コレクションの作成
重要
時系列コレクション用のサーバー バージョン
時系列コレクションを作成して操作するには、MongoDB Server 5.0以降を実行している配置に接続する必要があります。
時系列データを保存するには、時系列コレクションを作成します。時系列コレクションを作成するには、次のパラメータを mongoc_database_create_collection()
関数に渡します。
コレクションを作成するデータベース
作成する新しいコレクションの名前
timeField
オプションを指定するtimeseries
オブジェクト
次の例では、fall_weather
データベースに timeField
オプションを "timestamp"
フィールドに設定して、october2024
という名前の時系列コレクションを作成します。
// Initialize the MongoDB C Driver mongoc_init (); // Create a new client instance mongoc_client_t *client = mongoc_client_new ("<connection string>"); // Get a handle on the database mongoc_database_t *database = mongoc_client_get_database (client, "fall_weather"); // Create options for the time series collection bson_t *opts = BCON_NEW ( "timeseries", "{", "timeField", BCON_UTF8 ("timestamp"), "}"); // Create the time series collection bson_error_t error; mongoc_collection_t *collection = mongoc_database_create_collection (database, "october2024", opts, &error); if (!collection) { fprintf(stderr, "Error creating collection: %s\n", error.message); } bson_destroy (opts);
時系列コレクションが正常に作成されたことを確認するには、fall_weather
データベースで mongoc_database_find_collections_with_opts()
関数を実行し、結果を出力します。
// List collections in the database mongoc_cursor_t *cursor = mongoc_database_find_collections_with_opts (database, NULL); const bson_t *doc; while (mongoc_cursor_next (cursor, &doc)) { char *str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } // Check for cursor errors if (mongoc_cursor_error (cursor, &error)) { fprintf (stderr, "Cursor error: %s\n", error.message); } mongoc_cursor_destroy (cursor);
{ "name" : "october2024", "type" : "timeseries", "options" : { "timeseries" : { "timeField" : "timestamp", "granularity" : "seconds", "bucketMaxSpanSeconds" : { "$numberInt" : "3600" } } }, "info" : { "readOnly" : false } } ...
時系列データの保存
mongoc_collection_insert_one()
または mongoc_collection_insert_many()
関数を使用し、挿入された各ドキュメントで測定値、タイムスタンプ、メタデータを指定することで、時系列コレクションにデータを挿入できます。
コレクションにドキュメントを挿入する方法の詳細については、「 ドキュメントの挿入 」ガイドを参照してください。
例
次の例では、ニューヨーク市の温度データを、october2024
時系列コレクションの作成例で作成された 時系列コレクションに挿入します。各ドキュメントには、次のフィールドが含まれています。
temperature
、温度測定値を華氏単位で保存location
、場所のメタデータを保存するtimestamp
は、測定コレクションの時間を保存します
const bson_t *insert_doc = BCON_NEW ( "temperature", BCON_DOUBLE (70.0), "location", "{", "city", BCON_UTF8 ("New York"), "}", "timestamp", BCON_DATE_TIME (1633046400000)); if (!mongoc_collection_insert_one (collection, insert_doc, NULL, NULL, &error)) { fprintf(stderr, "Error inserting document: %s\n", error.message); }
時系列データのクエリ
時系列コレクションに保存されているデータをクエリするには、他のコレクションに対して読み取りまたは集計操作を実行するときに使用するのと同じ構文と規則を使用します。 これらの操作の詳細については、「追加情報」セクションを参照してください。
詳細情報
このガイドで言及されている概念の詳細については、次の MongoDB Server マニュアル エントリを参照してください。
読み取り操作の実行の詳細については、「 MongoDB からのデータの読み取り 」を参照してください。
集計操作の実行の詳細については、「集計によるデータの変換 」ガイドを参照してください。
API ドキュメント
このガイドで言及されている関数について詳しくは、次のAPIドキュメントを参照してください。