時系列データ
Overview
このガイドでは、 C++ドライバーを使用して時系列データを保存し、操作する方法を学習できます。
時系列データは、次のコンポーネントで構成されています。
測定値
測定のタイムスタンプ
測定を説明するメタデータ
次の表では、時系列データを保存できるサンプル状況について説明します。
状況 | 測定値 | Metadata |
---|---|---|
業種別の月間売上の記録 | USD 建てでの収益 | 会社、国 |
気象変化の追跡 | 降量レベル | ロケーション、センサータイプ |
家一軒の価格の変動を記録する | 月額料金 | ロケーション、通貨 |
時系列コレクションの作成
重要
時系列コレクション用のサーバー バージョン
時系列コレクションを作成して操作するには、MongoDB Server 5.0以降を実行している配置に接続する必要があります。
時系列データを保存するには、時系列コレクションを作成します。 時系列コレクションを作成するには、次のアクションを実行します。
時系列コレクションのプロパティを指定するBSONドキュメントを作成します。
create_collection()
メソッドを呼び出し、コレクション名と時系列BSONドキュメントを引数として渡します。
例
この例では、 precipitation
データベースに次の構成でsept2023
時系列コレクションを作成します。
timeField
に設定されている"timestamp"
metaField
に設定されている"location"
granularity
に設定されている"minutes"
auto db = client["precipitation"]; auto ts_info = make_document( kvp("timeseries", make_document( kvp("timeField", "timestamp"), kvp("metaField", "location"), kvp("granularity", "minutes") ))); auto collection = db.create_collection("sept2023", ts_info.view());
時系列コレクションが正常に作成されたことを確認するには、データベースでlist_collections()
メソッドを実行し、結果を出力します。
auto cursor = db.list_collections(); for(auto&& doc : cursor) { std::cout << bsoncxx::to_json(doc) << std::endl; }
{ "name" : "sept2023", "type" : "timeseries", "options" : { "timeseries" : { "timeField" : "timestamp", "metaField" : "location", "granularity" : "minutes", "bucketMaxSpanSeconds" : 86400 } }, "info" : ... }
時系列データの保存
時系列コレクションにデータを挿入するには、 insert_one()
またはinsert_many()
メソッドを使用し、挿入された各ドキュメントで測定値、タイムスタンプ、メタデータを指定します。
Tip
コレクションにドキュメントを挿入する方法の詳細については、「 ドキュメントの挿入 」ガイドを参照してください。
例
この例では、ニューヨーク市の降量データを、sept2023
時系列コレクションの作成例 で作成された 時系列コレクションに挿入し 例 。各ドキュメントには、次のフィールドが含まれています。
precipitation_mm
、降量の測定値をミリ秒単位で保存location
、場所のメタデータを保存するtimestamp
は、測定コレクションの時間を保存します
auto collection = db["sept2023"]; std::vector<bsoncxx::document::value> ts_data; ts_data.push_back(make_document(kvp("precipitation_mm", 0.5), kvp("location", "New York City"), kvp("timestamp", bsoncxx::types::b_date{std::chrono::milliseconds{1694829060000}}))); ts_data.push_back(make_document(kvp("precipitation_mm", 2.8), kvp("location", "New York City"), kvp("timestamp", bsoncxx::types::b_date{std::chrono::milliseconds{1695594780000}}))); auto result = collection.insert_many(ts_data);
時系列データのクエリ
時系列コレクションに保存されているデータをクエリするには、他のコレクションに対して読み取りまたは集計操作を実行するときに使用するのと同じ構文と規則を使用します。 これらの操作の詳細については、「追加情報」セクションを参照してください。
詳細情報
このガイドで言及されている概念の詳細については、次のサーバー マニュアル エントリを参照してください。
読み取り操作の実行の詳細については、「 MongoDB からのデータの読み取り 」を参照してください。
集計操作の実行の詳細については、「集計によるデータの変換 」ガイドを参照してください。
API ドキュメント
このガイドで言及されているメソッドについて詳しくは、次のAPIドキュメントを参照してください。