AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$queryStats(集計ステージ)

$queryStats

警告

$queryStats集計ステージはサポートされておらず、将来のリリースで安定することは保証されません。 このステージの特定の出力形式に依存する機能はビルドしないでください。出力は将来のリリースで変更される可能性があるためです。

記録されたクエリの実行時間統計を返します。

$queryStats aggregate()は、find() 、distinct() 、 、count() 、 、update() 、insert() deleteOne()、deleteMany() クエリのメトリクスを収集とレポートします。$queryStats は、 Queryable Encryptionを使用するクエリの情報を収集しません。

$queryStatsステージは、少なくとも M 10のクラスター階層を持つMongoDB Atlasでホストされている配置で有効になっています。

$queryStatsステージを実行するには、パイプラインが次の要件を満たしている必要があります。

  • パイプラインはadminデータベースで実行する必要があります。

  • $queryStats は、パイプラインの最初のステージである必要があります。

db.adminCommand( {
aggregate: 1,
pipeline: [
{
$queryStats: {
transformIdentifiers: {
algorithm: <string>,
hmacKey: <binData> /* subtype 8 - used for sensitive data */
}
}
}
],
cursor: { }
} )

重要

特定のコレクションに対して$queryStatsを実行することはできません。 完全な例については、「例 」を参照してください。

$queryStats は、次のフィールドがあります。

フィールド
必要性
タイプ
説明

transformIdentifiers

任意

ドキュメント

$queryStats出力の追加の変換オプションを指定します。

transformIdentifiers
.algorithm

transformIdentifiersオブジェクトを指定する場合は必須です

文字列

出力内の名前空間情報とフィールド名に適用されるハッシュ変換のタイプ。 現在サポートされているalgorithm値はhmac-sha-256のみです。

transformIdentifiers
.hmacKey

transformIdentifiersオブジェクトを指定する場合は必須です

binData

HMAC 変換での秘密キー入力。

配置でアクセス制御が強制されている場合、 $queryStatsを実行しているユーザーには次の権限が必要です。

  • transformIdentifiersオプションなしで$queryStatsを実行するには、ユーザーはqueryStatsRead特権アクションを持っている必要があります。

  • transformIdentifiersオプションを使用して$queryStatsを実行するには、ユーザーはqueryStatsReadとqueryStatsReadTransformedの両方の特権アクションを持っている必要があります。

組み込みのclusterMonitor queryStatsReadqueryStatsReadTransformedロールには、 特権と 特権が付与されます。次の例では、 adminデータベースでclusterMonitorロールを付与しています。

db.grantRolesToUser(
"<user>",
[ { role: "clusterMonitor", db: "admin" } ]
)

次のセクションでは、 $queryStatsステージの動作の詳細について説明します。

$queryStatsステージの統計情報は、メモリ内に保存される仮想コレクションで追跡されます。 仮想コレクションのメモリ制限は、システムの合計メモリの 1% です。

バージョン9.0の新機能。

MongoDB9.0 以降、 は、デフォルトで$queryStats 読み取りおよび書込み操作の1 % のサンプルの統計情報を収集します。サンプリングinternalQueryStatsSampleRate レートを変更するには、読み取り操作に パラメーターを設定するか、書込み操作にinternalQueryStatsWriteCmdSampleRate パラメーターを設定します。どちらのパラメータも から0.0 1.0までの値を受け入れます。

$queryStats はMongoDB がサンプリングした操作のみを報告するため、その出力は配置に対して実行された操作のサブセットを表します。カウントと実行時間は、サンプリングされた操作のみを反映します。

$queryStats は、共通のプロパティを持つクエリを同じ出力ドキュメントにグループ化します。 結果として得られるドキュメントは、クエリ統計エントリと呼ばれます。

$queryStats は、ユーザーから提供されたフィールド値をデータ型に正規化することで、同様のクエリをグループ化します。 たとえば、 { item: 'card' }に指定されたフィルターは{ item : '?string'}に正規化されます。 $queryStatsは、 hintやcommentなどの一部のクエリ オプションの値も正規化します。

$queryStats では、 readConcernやreadPreferenceなどのオプションのリテラル値が保持されます。

クエリ統計エントリに含まれるオプションの完全なリストについては、 find コマンド クエリシェイプ を参照してください。

HMAC キーがtransformIdentifiersオプションに指定されている場合、 $queryStatsは HMAC キーを使用して、次のデータに HMAC-SHA-256 ハッシュ関数を適用します。

  • ドキュメント フィールド名

  • コレクション名

  • データベース名

$queryStats では、次のデータには HMAC 変換は適用されません。

  • 演算子名などの MQL キーワード(例: $gte )。

  • パラメータ名( $setWindowFieldsのpartitionByパラメータなど)

  • フィールド値。 $queryStats は、クエリが記録されるときに、クエリ内のフィールド値をデータ型( 数値 やstringなど)に正規化します。 $queryStatsはユーザー データを含むフィールド値を保存しません。

変換された出力の例については、「変換された例 」を参照してください。

MongoDB は配置ログに$queryStats操作を記録します。デフォルトでは、MongoDB は$queryStats操作の呼び出しのみをログに記録し、操作の出力は記録しません。transformIdentifiersオプションを含む$queryStats操作の場合、変換された出力をログ エントリに含めるかどうかを指定できます。

$queryStatsのログ動作を制御する方法については、「 $queryStats ログ出力の切り替え 」を参照してください。

変更ストリームのクエリ統計は、次のいずれかのイベントが発生したときに更新されます。

  • カーソルが作成される

  • getMore操作が完了しました

  • カーソルが閉じている

変更ストリームに対して報告されるクエリ統計は、次の動作をします。

  • totalExecMicrosなどの実行メトリクスには、直近の操作(カーソルの作成、 getMore 、またはカーソルの閉じ)の情報が含まれています。

  • 内部getMore操作によりexecCountメトリクスが増加します。

  • firstResponseExecMicros とtotalExecMicrosは、 getMore操作ごとに統計情報が収集および更新されるため、常に同じです。

  • カーソルが閉じると、 lastExecutionMicrosは0になります。

バージョン8.3の新機能。

シャーディングされたクラスターでは、$queryStats が有効になっている場合、 MongoDB はそれぞれの mongod と mongos でクエリ統計を個別に記録します。シャードサーバーは、mongos から発生したクエリの統計情報もレコード。これらは、ユーザーが mongos を介してルーティングするクエリに対して、より完全なシャードレベルのメトリクスを提供します。

$queryStats は、クエリ統計エントリの配列を返します。 一部のクエリ統計エントリ プロパティにはリテラル値が含まれており、一部のプロパティは一般的なクエリをグループ化するように正規化されています。

注意

MongoDB 9.0 は、メトリクス組織 を改善するために $queryStats 出力構造を更新します。

クエリ統計エントリには、次の最上位ドキュメントが含まれます。

ドキュメント
説明

key

クエリ統計出力のエントリを定義する属性の一意の組み合わせ。 keyには次のような属性が含まれています。

属性の一意の組み合わせごとに、 $queryStats仮想コレクションに個別のエントリが作成されます。

asOf

$queryStatsが$queryStats仮想コレクションからこのエントリを読み取った UTC 時間。 asOfは必ずしも各結果に対して同じ UTC 時間を返すわけではありません。 内部的には、データ構造はパーティション化され、各パーティションは個別の時点で読み取られます。

metrics

各クエリ統計エントリに関連付けられた集計されたランタイム メトリクスが含まれています。 各クエリ統計エントリは、同じキーを共有する各クエリの統計情報を記録します。

出力配列内の各ドキュメントには、次のフィールドが含まれています。

フィールド
タイプ
リテラルまたは正規化
説明

key

ドキュメント

literal

クエリのセットをグループ化するクエリシェイプと追加のクエリ属性が含まれます

key.queryShape

ドキュメント

literal

類似したクエリをグループ化するために使用される属性が含まれています。 詳細については、「クエリシェイプ 」を参照してください。

key.client

ドキュメント

literal

キーに関連付けられたクライアント情報を記述します

key.client.application

ドキュメント

literal

クライアント・アプリケーション名

key.client.driver

ドキュメント

literal

クエリの発行に使用されるドライバーについて説明します

key.client.driver.name

文字列

literal

クエリの発行に使用されるドライバーの名前。 可能な値はmongoshとnodejsです。

key.client.driver.version

文字列

literal

クエリの発行に使用されるドライバーのバージョン番号

key.client.os

ドキュメント

literal

クエリを発行したクライアントが使用するオペレーティング システムを説明します

key.client.os.type

文字列

literal

オペレーティング システムの種類

key.client.os.name

文字列

literal

オペレーティング システムの名前

key.client.os.architecture

文字列

literal

オペレーティング システムのアーキテクチャ。 可能な値はarm64とx86_64です。

key.client.os.version

文字列

literal

オペレーティング システムのバージョン番号

key.readConcern

ドキュメント

literal

キーの 読み取り保証 ( read concern )

key.collectionType

文字列

literal

クエリが発行されたコレクションのタイプ。 詳細については、「コレクション タイプ 」を参照してください。

key.hint

ドキュメントまたは文字列

正規化

クエリのヒントとして使用されたインデックス

key.batchSize

文字列

正規化

キーのバッチするサイズ。バッチ サイズは、クエリ結果の各バッチするで返されるドキュメントの最大数を指定します。デフォルトでは 、初期バッチするサイズは 101 ドキュメントまたはドキュメントの 16 メビバイト(MiB)値のうち小さい方です。それ以降のバッチの最大サイズは 16 MiB です。batchSize では 16 MiB より小さい制限を適用できますが、大きくすることはできません。設定すると、batchSize は batchSize ドキュメントまたは 16 MiB 値のドキュメントのうち小さい方です。

key.comment

文字列

正規化

キーに関連付けられたコメント

key.maxTimeMS

文字列

正規化

キーに関連付けられたmaxTimeMS値

key.noCursorTimeout

ブール値

正規化

キーに関連付けられたnoCursorTimeoutオプション

key.readPreference

文字列

literal

キーに関連付けられた読み込み設定(read preference )

key.apiVersion

文字列

literal

キーに関連付けられている Stable APIバージョン。 「 MongoDB Stable API for Serverアップグレード 」を参照してください。

key.apiStrict

ブール値

literal

キーに関連付けられたapiStrictパラメータの値。 「 Stable API パラメーター 」を参照してください。

key.apiDeprecationErrors

ブール値

literal

キーに関連付けられたapiDeprecationErrorsパラメータの値。 「 Stable API パラメーター 」を参照してください。

keyHash

文字列

literal

key内の値のハッシュされた表現。 各一意のkeyHash値は、 $queryStatsメモリ ストア内の一意のエントリに対応します。

queryShapeHash

文字列

literal

バージョン8.0の新機能。

queryShapeHash は、string クエリシェイプ のハッシュを含む 16 進数の です。詳細については、「クエリシェイプ 」を参照してください。

metrics

ドキュメント

literal

キーの実行時統計を記述します

metrics.cursor

ドキュメント

literal

バージョン9.0の新機能。

カーソルとバッチ処理プロトコルに関連するメトリクス

metrics
.cursor
.firstResponseExecMicros

ドキュメント

literal

バージョン9.0で変更。

キー内のクエリの処理が開始されてから、サーバーが結果の最初のバッチするを返すまでに費やされた時間を説明します

firstResponseExecMicrosのすべてのサブフィールドはマイクロ秒単位で報告されます。

metrics.queryExec

ドキュメント

literal

バージョン9.0の新機能。

クエリ実行に関連するメトリクス

metrics
.queryExec
.docsReturned

ドキュメント

literal

バージョン9.0で変更。

キー内のクエリによって返されたドキュメントの数を示します

metrics
.queryExec
.docsReturned
.sum

NumberLong

literal

指定されたキーを持つクエリによって返されたドキュメントの合計数

metrics
.queryExec
.docsReturned
.max

NumberLong

literal

指定されたキーを持つクエリによって返されるドキュメントの最大数

metrics
.queryExec
.docsReturned
.min

NumberLong

literal

指定されたキーを持つクエリによって返されたドキュメントの最小数

metrics
.queryExec
.docsReturned
.sumOfSquares

NumberDecimal

literal

キー内のクエリによって返されたドキュメント数の正方形の合計。

sumOfSquares値が高い場合は、個々のクエリ間で返されるドキュメント数の差異が大きいことを示します。

metrics
.queryExec
.keysExamined

ドキュメント

literal

クエリによって検査されたキーの数を示します

metrics
.queryExec
.keysExamined
.sum

整数

literal

検査されたキーの合計数

metrics
.queryExec
.keysExamined
.max

NumberLong

literal

検査されたキーの最大数

metrics
.queryExec
.keysExamined
.min

NumberLong

literal

検査されたキーの最小数

metrics
.queryExec
.keysExamined
.sumOfSquares

NumberDecimal

literal

検査されたキーの数の正方形の合計。

sumOfSquaresの値が高い場合は、個々のクエリで検査されるキーの数の分散が大きいことを示します。

metrics
.queryExec
.docsExamined

ドキュメント

literal

バージョン9.0で変更。

クエリによって検査されたドキュメントの数を示します

metrics
.queryExec
.docsExamined
.sum

整数

literal

クエリで検査されたドキュメントの合計数

metrics
.queryExec
.docsExamined
.max

NumberLong

literal

検査されたドキュメントの最大数

metrics
.queryExec
.docsExamined
.min

NumberLong

literal

検査されたドキュメントの最小数

metrics
.queryExec
.docsExamined
.sumOfSquares

NumberDecimal

literal

検査されたドキュメント数の正方形の合計。

sumOfSquaresの値が高い場合は、個々のクエリで検査されるドキュメント数の差異が大きいことを示します。

metrics
.queryExec
.bytesRead

ドキュメント

literal

バージョン9.0で変更。

クエリによって読み取られるバイト数を示します

metrics
.queryExec
.bytesRead
.sum

整数

literal

クエリで読み取られたバイトの合計数

metrics
.queryExec
.bytesRead
.max

NumberLong

literal

読み取られる最大バイト数

metrics
.queryExec
.bytesRead
.min

NumberLong

literal

読み取られる最小バイト数

metrics
.queryExec
.bytesRead
.sumOfSquares

NumberDecimal

literal

読み込まれたバイト数の正方形の合計

metrics
.queryExec
.readTimeMicros

ドキュメント

literal

バージョン9.0で変更。

クエリの読み取り時間をマイクロ秒単位で記述します

metrics
.queryExec
.readTimeMicros
.sum

整数

literal

クエリの合計読み取り時間(マイクロ秒単位)

metrics
.queryExec
.readTimeMicros
.max

NumberLong

literal

クエリの最大読み取り時間(マイクロ秒単位)

metrics
.queryExec
.readTimeMicros
.min

NumberLong

literal

クエリの最小読み取り時間(マイクロ秒単位)

metrics
.queryExec
.readTimeMicros
.sumOfSquares

NumberDecimal

literal

クエリの読み取り時間の正方形の合計(マイクロ秒単位)

metrics
.queryExec
.delinquentAcquisitions

NumberLong

literal

バージョン9.0で変更。

クエリ操作が予想される実行チケットの取得時間を超えた回数。

metrics
.queryExec
.totalAcquisitionDelinquencyMillis

NumberLong

literal

バージョン9.0で変更。

クエリ操作が予想される実行チケットの取得時間を超えた合計時間(ミリ秒)。

metrics
.queryExec
.maxAcquisitionDelinquencyMillis

NumberLong

literal

バージョン9.0で変更。

クエリ操作が予想される実行チケットの取得時間を超えた最長時間(ミリ秒単位)。

metrics.lastExecutionMicros

NumberLong

literal

指定されたキーを持つすべてのクエリに対する最新のクエリの実行ランタイム

metrics.execCount

NumberLong

literal

指定されたキーを持つクエリが実行された回数

metrics.queryPlanner

ドキュメント

literal

バージョン9.0で変更。

クエリプランに関連するメトリクス

metrics
.queryPlanner
.hasSortStage

ドキュメント

literal

バージョン9.0で変更。

true と false の 2 つのフィールドを含むオブジェクト。各フィールドは、hasSortStage の値がそれぞれ true または false である一致するクエリの数をカウントします。

hasSortStage は、 MongoDB がカーソルからドキュメントを受け取った後にドキュメントをソートする必要がある場合、true です。

metrics
.queryPlanner
.usedDisk

ドキュメント

literal

バージョン9.0で変更。

true と false の 2 つのフィールドを含むオブジェクト。各フィールドは、usedDisk の値がそれぞれ true または false である一致するクエリの数をカウントします。

usedDisk は、メモリ制限によりクエリが一時ファイルにデータを書込む場合、true です。

metrics
.queryPlanner
fromMultiPlanner

ドキュメント

literal

バージョン9.0で変更。

true と false の 2 つのフィールドを含むオブジェクト。各フィールドは、fromMultiPlanner の値がそれぞれ true または false である一致するクエリの数をカウントします。

fromMultiPlanner クエリ プランナーがクエリの最適な実行プランを選択する前に複数のプランを評価する場合、は true です。

metrics
.queryPlanner
fromPlanCache

ドキュメント

literal

バージョン9.0で変更。

true と false の 2 つのフィールドを含むオブジェクト。各フィールドは、fromPlanCache の値がそれぞれ true または false である一致するクエリの数をカウントします。

fromPlanCache は、クエリ プランナーが プランキャッシュのプランを使用できる場合、true です。

metrics
.queryPlanner
.planShapeCounters

ドキュメント

literal

バージョン9.0の新機能。

指定されたキーを持つクエリ用にMongoDBによって選択されたプランシェイプのカウント。詳細については、「 プランシェイプ カウンター 」を参照してください。

metrics
.queryPlanner
.planShapeCounters
.patterns

ドキュメント

literal

バージョン9.0の新機能。

当選したプランの全体的な形状のカウント。当選プランはそれぞれ、最大 1 つのパターンと一致します。

metrics
.queryPlanner
.planShapeCounters
.nodes

ドキュメント

literal

バージョン9.0の新機能。

当選プランに表示されるプラン ステージのタイプのカウント。 1 つの選出されたプランは複数のノードカウンターと一致できます。

metrics
.queryPlanner
.planShapeCounters
.accessPaths

ドキュメント

literal

バージョン9.0の新機能。

当選プランが使用するデータアクセスパスとインデックスの限界のカウント。 1 つの当選プランは複数のアクセス パス カウンターと一致できます。

metrics.writes

ドキュメント

literal

バージョン9.0で変更。

書込み (write) に関連するメトリクス

metrics
.writes
nMatched

NumberLong

literal

バージョン9.0の新機能。

更新によって選択されるドキュメントの数

metrics
.writes
nUpserted

NumberLong

literal

バージョン9.0の新機能。

更新操作によって挿入されるドキュメントの数

metrics
.writes
nModified

NumberLong

literal

バージョン9.0の新機能。

更新操作により変更されるドキュメントの数

metrics
.writes
nDeleted

NumberLong

literal

バージョン9.0の新機能。

更新操作によって削除されるドキュメントの数

metrics
.writes
nInserted

NumberLong

literal

バージョン9.0の新機能。

更新操作によって挿入されるドキュメント数(アップサートを除く)

metrics
.writes
nUpdateOps

NumberLong

literal

バージョン9.0の新機能。

元の更新リクエストでの更新数

metrics.totalExecMicros

ドキュメント

literal

指定されたキーでクエリの実行に費やされた合計時間を説明します。 クエリでgetMoresが発生した場合、 totalExecMicrosにはgetMoreリクエストの処理に費やされた時間が含まれます。 totalExecMicrosにはクライアントの待機に費やされた時間は含まれません。

totalExecMicrosのすべてのサブフィールドはマイクロ秒単位で報告されます。

metrics
.totalExecMicros
.sum

NumberLong

literal

指定されたキーでクエリの実行に費やされた時間の合計

metrics
.totalExecMicros
.max

NumberLong

literal

指定されたキーでクエリの実行に費やされた最も長い時間

metrics
.totalExecMicros
.min

NumberLong

literal

指定されたキーでクエリの実行に費やされた最も短い時間

metrics
.totalExecMicros
.sumOfSquares

NumberDecimal

literal

指定されたキーを持つすべてのクエリの合計実行時間の正方形の合計。 sumOfSquares値が高い場合は、クエリ実行時間の分散が大きいことを示します。

metrics
.cursor
.firstResponseExecMicros
.sum

NumberLong

literal

クエリ処理の開始からサーバーが結果の最初のバッチを返すまでに費やされた時間の合計

metrics
.cursor
.firstResponseExecMicros
.max

NumberLong

literal

クエリ処理の開始からサーバーが結果の最初のバッチを返すまでに費やされた時間の最長

metrics
.cursor
.firstResponseExecMicros
.min

NumberLong

literal

クエリ処理の開始からサーバーが結果の最初のバッチを返すまでに費やされる最も短い時間

metrics
.cursor
.firstResponseExecMicros
.sumOfSquares

NumberDecimal

literal

クエリ処理の開始からサーバーが結果の最初のバッチを返すまでに費やされた時間の正方形の合計。

sumOfSquares値が高い場合は、クエリ処理時間の分散が大きいことを示します。

metrics.firstSeenTimestamp

日付

literal

前回の再起動以降、指定されたキーを持つクエリが最初に使用された時間

metrics.latestSeenTimestamp

日付

literal

指定されたキーを持つクエリが最後に使用された時間

metrics.workingTimeMillis

NumberLong

literal

ロックやフロー制御の待機時間など、意図的な一時停止を除く操作の実行時間。

metrics
.costBasedRanker

ドキュメント

literal

クエリ プラン作成中に使用される場合、CDR に関連するメトリクスが含まれます。 CCR は複数のクエリプランを評価し、推定されるコストに基づいて最も効率的なプランを選択します。

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.nDocsSampled

ドキュメント

literal

指定されたキーを持つクエリのコストに基づくランキング中にサンプルされたドキュメントの数に関連するメトリクスが含まれます。

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.nDocsSampled
.sum

NumberLong

literal

コストベースのランキング中にサンプルされたドキュメントの総数。

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.nDocsSampled
.max

NumberLong

literal

コストベースランキング中にサンプルされるドキュメントの最大数。

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.nDocsSampled
.min

NumberLong

literal

コストに基づいたランキング中にサンプルされるドキュメントの最小数。

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.nDocsSampled
.sumOfSquares

NumberDecimal

literal

コストに基づいたランキング中にサンプルされたドキュメント数の平方和。

sumOfSquaresの値が高い場合は、個々のクエリでサンプルされるドキュメント数の差異が大きいことを示します。

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.cardinalityEstimationMethods

ドキュメント

literal

コストに基づいたランキング中に使用された各濃度推定方法のカウントが含まれます。各フィールドは、特定の推定方法が使用された回数を表します。

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Histogram

NumberLong

literal

ヒストグラムに基づいた濃度推定が使用された回数。

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Sampling

NumberLong

literal

サンプリングに基づく濃度概算が使用された回数

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Heuristics

NumberLong

literal

ヒューリスティックに基づいた濃度推定が使用された回数。

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Mixed

NumberLong

literal

濃度推定に対する混合アプローチが使用された回数。

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Metadata

NumberLong

literal

メタデータに基づく濃度推定が使用された回数。

バージョン8.3.3の新機能。

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Code

NumberLong

literal

コードに基づいた濃度推定が使用された回数。

バージョン8.3.3の新機能。

metrics
.cpuNanos

ドキュメント

literal

クエリ操作の CPU 使用率に関連するメトリクスが含まれています。このドキュメントは、 Linuxシステムでのみ使用できます。

バージョン8.2の新機能。

metrics
.cpuNanos
.sum

NumberLong

literal

クエリ操作に費やされた CPU 時間の合計 (ナノ秒単位)。このフィールドは、Linux システムでのみ使用できます。

バージョン8.2の新機能。

metrics
.cpuNanos
.max

NumberLong

literal

クエリ操作に費やされる CPU 時間の最大値(ナノ秒単位)。このフィールドは、Linux システムでのみ使用できます。

バージョン8.2の新機能。

metrics
.cpuNanos
.min

NumberLong

literal

クエリ操作に費やされた最小 CPU 時間 (ナノ秒単位)。このフィールドは、Linux システムでのみ使用できます。

バージョン8.2の新機能。

metrics
.cpuNanos
.sumOfSquares

NumberDecimal

literal

クエリ操作に費やされた CPU 時間の正方形の合計。このフィールドは、 Linuxシステムでのみ使用できます。

sumOfSquares の値が高い場合は、個々のクエリの CPU 時間の分散が大きいことを示します。

バージョン8.2の新機能。

metrics
.clusterPeakTrackedMemBytes

NumberLong

literal

クエリ実行中に接続されるすべてのリモート シャードからのピーク追跡メモリの合計。

バージョン9.0の新機能。

metrics
.peakTrackedMemBytes

NumberLong

literal

ローカルで追跡されるメモリ使用量のピーク。

バージョン9.0の新機能。

metrics
.planningTimeMicros

ドキュメント

literal

指定されたキーを持つクエリのクエリプランニング中に花された時間に関連するメトリクスが含まれます。planningTimeMicrosのすべてのサブフィールドはマイクロ秒単位で報告されます。

バージョン8.3の新機能。

metrics
.planningTimeMicros
.sum

NumberLong

literal

クエリプランニングの合計時間。

バージョン8.3の新機能。

metrics
.planningTimeMicros
.max

NumberLong

literal

クエリプランニングの最大時間。

バージョン8.3の新機能。

metrics
.planningTimeMicros
.min

NumberLong

literal

最小クエリ計画時間。

バージョン8.3の新機能。

metrics
.planningTimeMicros
.sumOfSquares

NumberDecimal

literal

クエリ プランニング時間の二乗和。

sumOfSquares の値が高い場合は、個別のクエリの計画時間の分散が大きいことを示します。

バージョン8.3の新機能。

metrics
.numInterruptChecksPerSec

NumberLong

literal

クエリ操作が1 秒あたりに checkForInterrupt を呼び出す回数。このメトリクスは、getMores を使用してクエリを複数のバッチで実行すると集計されます。

バージョン8.3の新機能。

metrics
.overdueInterruptApproxMaxMillis

NumberLong

literal

サンプリングされたクエリ操作のためにシステムによって checkForInterrupt が遅延した最大ミリ秒数。

バージョン8.3の新機能。

バージョン9.0の新機能。

metrics.queryPlanner.planShapeCountersドキュメントは、指定されたキーを持つクエリに対してMongoDB が各プランシェイプを選択した頻度を記録します。これらのカウンターを使用して、ワークロードがどのクエリプランに最も依存しているかを把握します。

planShapeCounters には最大 3 つのサブドキュメントが含まれており、各マップ カウンター名は以下をカウントします。

サブドキュメント
説明

patterns

当選した各プランの全体的な形状をカウントします。パターンは相互に排他的であるため、クエリを実行するたびに最大 1 つのパターン カウンターが増加します。

nodes

各当選プランに表示されるプラン ステージのタイプをカウントします。ノードカウンターは相互に排他的ではないため、1 回のクエリを実行すると複数のノードを増加させることができます。

accessPaths

各当選プランが使用するデータアクセスパスとインデックスの限界をカウントします。アクセス パス カウンターは相互に排他的ではないため、1 回のクエリを実行すると複数のアクセス パス カウンターを増加させることができます。

各 カウンターは、プランが対応するステージまたはアクセス パスを何度も使用する場合でも、クエリの実行ごとに最大 1 つの増加します。例、$or ステージの下に 1,000 のブランチを含むプランでは、一致する $orノードのカウンターは 1 つずつ増加し、1,000 ではありません。その結果、 カウンターは、1 つのステージを使用した実行の回数をレコード、各実行がステージを使用した回数を記録します。

MongoDB はがゼロのカウンターを省略し、カウンターを含まないサブドキュメントを省略します。記録されたクエリのいずれでプランシェイプ カウンターも生成されない場合、 MongoDB はplanShapeCountersドキュメントを完全に省略します。例、_id が単一のドキュメントに一致するクエリは、どの追跡プランシェイプにも一致しない高速パスを使用するため、そのクエリ統計エントリには planShapeCountersドキュメントは含まれません。

MongoDB は最上位クエリのプランシェイプ カウンターのみを記録します。例、 MongoDB は$lookup ステージの外部のカウンターをレコードません。

各パターン カウンター名には、アクセス パス ステージから始まる、当選プランのステージが順番に一覧表示されます。例、ixscanFetchSort はインデックススキャンを使用し、一致するドキュメントを取得して並べ替える当選プランをカウントします。

パターン名は大まかなレベルでプランを説明します。制限を省略し、ステージをスキップするため、ステージでフィルターが適用されるかどうかや、プランで使用されるプロジェクションのタイプは区別されません。これらの詳細を判別するには、パターンnodes カウンターを カウンターとエントリのクエリシェイプと組み合わせます。

patterns には次のカウンターを含めることができます。

アクセス パス
カウンター

コレクションスキャン

  • collscan

  • collscanProject

  • collscanProjectSort

  • collscanProjectSortProject

  • collscanSort

  • collscanSortProject

  • collscanSortProjectSort

フェッチによるインデックススキャン

  • ixscanFetch

  • ixscanFetchProject

  • ixscanFetchProjectSort

  • ixscanFetchProjectSortProject

  • ixscanFetchSort

  • ixscanFetchSortProject

  • ixscanFetchSortProjectSort

  • ixscanFetchSortMerge

  • ixscanFetchSortMergeProject

インデックス スキャン $or

  • ixscanFetchOr

  • ixscanFetchOrProject

  • ixscanFetchOrProjectSort

  • ixscanFetchOrSort

  • ixscanFetchOrSortProject

  • ixscanOrFetch

  • ixscanOrFetchProject

  • ixscanOrFetchProjectSort

  • ixscanOrFetchSort

  • ixscanOrFetchSortProject

  • ixscanOrProject

  • ixscanOrProjectSort

即座にフェッチせずにインデックススキャン

  • ixscanProject

  • ixscanProjectSort

  • ixscanProjectSortProject

  • ixscanSortFetch

  • ixscanSortFetchProject

  • ixscanSortMergeFetch

  • ixscanSortMergeFetchProject

  • ixscanSortMergeProject

MongoDB はクエリ実行エンジンを選択した後にノードカウンターを記録するため、カウンターには スロットベースのエンジンにプッシュダウンされる集計ステージを表す プラン ステージ が含まれます。

nodes には次のカウンターを含めることができます。

カウンター
説明

collscanNoFilter
collscanWithFilter

コレクション スキャン ステージ。ステージがフィルターを適用するかどうかに基づいて個別にカウントされます。

ixscanNoFilter
ixscanWithFilter

インデックス スキャン ステージ。ステージがフィルターを適用するかどうかに基づいて個別にカウントされます。

fetchNoFilter
fetchWithFilter

ステージがフィルターを適用するかどうかに基づいて個別にカウントされる取得ステージ。

andHashNoFilter
andHashWithFilter

ハッシュベースのインデックス交差ステージは、ステージがフィルターを適用するかどうかに基づいて個別にカウントされます。

andSorted

ソートされたインデックス交差ステージ。

orNoFilterLte100Children
orWithFilterLte100Children
orNoFilterGt100Children
orWithFilterGt100Children

$or ステージは、ステージがフィルターを適用するかどうか、およびステージに 100 を超える子ステージがあるかどうかに基づいて個別にカウントされます。

sortMergeNoFilterLte100Children
sortMergeWithFilterLte100Children
sortMergeNoFilterGt100Children
sortMergeWithFilterGt100Children

ステージがフィルターを適用するかどうか、およびステージに100以上の子ステージがあるかどうかに基づいて、マージ ステージを個別にカウントして並べ替えます。

returnKey

ドキュメントの代わりにインデックスキーを返すステージ。

shardingFilter

シャード上の 孤立したドキュメント をフィルタリングで除外するステージ。

projectionDefault
projectionCovered
projectionSimple

プロジェクション ステージは、プロジェクションのタイプ別にカウントされます。

sortKeyGenerator

ソートのソートキーを生成するステージ。

sortDefaultNoLimit
sortDefaultWithLimit
sortSimpleNoLimit
sortSimpleWithLimit

ソート ステージは、ソートタイプ別、およびソートに制限があるかどうかによって個別にカウントされます。

limitSmall
limitMedium
limitLarge

ステージは、制限値によって個別にカウントされます。 limitSmall は 100 以下の制限、limitMedium は 101 から 10、000 までのカウント制限、limitLarge のカウント制限は 10,000 より大きいカウント制限です。

skipSmall
skipMedium
skipLarge

スキップ値によって個別にカウントされるスキップ ステージ。 skipSmall は 100 以下のスキップをカウントし、skipMedium は 101 から 10、000 へのスキップをカウントし、skipLarge は 10、000 より大きいスキップをカウントします。

textOr

テキスト検索の結果を組み合わせたステージ。

match

ステージをマッチします。

replaceRoot

ドキュメントのルートを置き換えるステージ。

group

ステージをグループ化します。

eqLookupNoUnwind
eqLookupWithUnwind

等価検索ステージは、ステージが結果も展開するかどうかに基づいて個別にカウントされます。

unpackTsBucket

時系列バケットを解凍するステージ。

hashJoin
nlj
inlj
indexProbe

結合アルゴリズムによって個別にカウントされる結合ステージは、ハッシュ結合、ネストされたループ結合、インデックス付きネストされたループ結合、およびインデックスプロジェクトです。

accessPaths には次のカウンターを含めることができます。

カウンター
説明

collscan
clusteredCollscan

coveredIxscan

ドキュメントを取得しないインデックス スキャン。

ixscanFetch

ドキュメントを取得するインデックス スキャン。

countScan

ドキュメントを返さずにインデックスキーをカウントするスキャン。

distinctScan
distinctScanFetch

重複インデックスキーをスキップするスキャン。このスキャンはドキュメントを取得しているかどうかに基づいて個別にカウントされます。

geoNear2d
geoNear2dSphere

textMatch

otherAccessPath

コレクションスキャン、インデックススキャン、カウントスキャン、個別のスキャン、または地理空間アクセスパスを使用しないプランが当選します。テキスト検索のみを実行するプランでは、textMatch と otherAccessPath の両方が増加します。

btreeIxscan
wildcardIxscan
sparseIxscan
uniqueIxscan
hashedIxscan
multikeyIxscan

インデックススキャンは、インデックスプロパティによって個別にカウントされます。 1 回のインデックススキャンで複数のこれらのカウンターを増分できます。

boundsFullScan
boundsPoint
boundsBoundedRange
boundsMinKeyToValue
boundsValueToMaxKey
boundsMixture

インデックス スキャン。スキャンが使用するインデックスの限界によって個別にカウントされます。 MongoDB は、スキャンで複数のタイプの限界が使用される場合、boundsMixture を増加させます。

boundsUnionedSmall
boundsUnionedLarge

インデックスは、フィールドに複数の限界がある場合をスキャンし、限界の数で個別にカウントされます。 boundsUnionedSmall は 2 ~ 50 の境界があるフィールドをカウントし、boundsUnionedLarge は 51 以上の境界があるフィールドをカウントします。

key.collectionTypeフィールドは、記録されたクエリが発行されたコレクションのタイプを示します。 collectionTypeは次のいずれかの値になります。

フィールド
説明

changeStream

collection

nonExistent

クエリは、存在しないコレクションに対して発行されました。

timeseries

view

virtual

クエリは仮想コレクションに対して発行されました。 仮想コレクションでは、次の操作が実行されます。

key.queryShapeドキュメントにはクエリシェイプフィールドが含まれています。 クエリシェイプの詳細については、「クエリシェイプ 」を参照してください。

key.queryShapeのフィールドは、クエリ統計エントリを生成したコマンドに基づいて異なります。$queryStats aggregateは、find 、distinct 、count 、update 、 、insert 、delete コマンドのクエリ統計エントリを作成します。

各クエリシェイプ プロパティは、クエリ オプションに対応します。 たとえば、 key.queryShape.sortは、クエリシェイプのsort()仕様に対応します。

以下の表では、 findコマンドのクエリシェイプ プロパティを説明しています。

フィールド
タイプ
リテラルまたは正規化

key.queryShape.filter

ドキュメント

正規化

key.queryShape.sort

ドキュメント

literal

key.queryShape.projection

ドキュメント

正規化

key.queryShape.skip

整数

正規化

key.queryShape.limit

整数

正規化

key.queryShape.singleBatch

ブール値

literal

key.queryShape.max

ドキュメント

正規化

key.queryShape.min

ドキュメント

正規化

key.queryShape.returnKey

ブール値

literal

key.queryShape.showRecordId

ブール値

literal

key.queryShape.tailable

ブール値

literal

key.queryShape.oplogReplay

ブール値

literal

key.queryShape.awaitData

ブール値

literal

key.queryShape.collation

ドキュメント

literal

key.queryShape.allowDiskUse

ブール値

literal

key.queryShape.let

ドキュメント

正規化

以下の表では、 aggregateコマンドのクエリシェイプ プロパティを説明しています。

フィールド
タイプ
リテラルまたは正規化

key.queryShape.pipeline

配列

正規化

key.queryShape.explain

ブール値

literal

key.queryShape.allowDiskUse

ブール値

literal

key.queryShape.allowPartialResults

ブール値

literal

key.queryShape.collation

ドキュメント

literal

key.queryShape.hint

文字列またはドキュメント

正規化

key.queryShape.let

ドキュメント

正規化

以下の表では、 distinctコマンドのクエリシェイプ プロパティを説明しています。

フィールド
タイプ
リテラルまたは正規化

key.queryShape.collation

ドキュメント

正規化

key.queryShape.key

文字列

literal

key.queryShape.query

ドキュメント

正規化

以下の表では、 countコマンドのクエリシェイプ プロパティを説明しています。

フィールド
タイプ
リテラルまたは正規化

key.queryShape.collation

ドキュメント

正規化

key.queryShape.query

ドキュメント

正規化

key.queryShape.limit

整数

正規化

key.queryShape.skip

整数

正規化

バージョン9.0の新機能。

以下の表では、update コマンドのクエリシェイププロパティを説明しています。 $queryStats は、最上位の update コマンド全体ではなく、updates 配列内の各アップデート ステートメントのクエリシェイプ統計を追跡します。

フィールド
タイプ
リテラルまたは正規化

key.queryShape.q

ドキュメント

正規化

key.queryShape.u

ドキュメントまたは配列

正規化

key.queryShape.c

ドキュメント

正規化

key.queryShape.arrayFilters

ドキュメントの配列

正規化

key.queryShape.multi

ブール値

literal

key.queryShape.upsert

ブール値

literal

key.queryShape.let

ドキュメント

正規化

key.queryShape.collation

ドキュメント

literal

バージョン9.0の新機能。

以下の表では、insert コマンドのクエリシェイププロパティを説明しています。 $queryStats は、documents 配列内の各ドキュメントではなく、insert コマンド全体に対してクエリシェイプ統計を 1 回追跡します。 MongoDB、挿入されたドキュメントの数や内容に関係なく、常に documents を固定のプレースホルダー値に正規化します。

フィールド
タイプ
リテラルまたは正規化

key.queryShape.documents

配列

正規化

バージョン9.0の新機能。

以下の表では、delete コマンドのクエリシェイププロパティを説明しています。 $queryStats は、最上位の delete コマンド全体ではなく、deletes 配列内の各削除ステートメントのクエリシェイプ統計を追跡します。

key.queryShape.limit は、delete ステートメントの limitフィールドを反映します。0 は一致するすべてのドキュメントを削除し、1 は 1 つのドキュメントを削除します。クエリ統計エントリ数は制限されません。

フィールド
タイプ
リテラルまたは正規化

key.queryShape.q

ドキュメント

正規化

key.queryShape.limit

整数

literal

key.queryShape.let

ドキュメント

正規化

key.queryShape.collation

ドキュメント

literal

クエリ統計エントリには、クエリに関する追加情報を提供する metrics.supplementalMetricsドキュメントが含まれる場合があります。

クエリシェイプに $vectorSearch が含まれている場合、$queryStats は次の追加メトリクスを出力します。

フィールド
タイプ
説明

metrics
.supplementalMetrics
.vectorSearch

ドキュメント

$vectorSearch集計ステージに関する追加メトリクス

metrics
.supplementalMetrics
.vectorSearch
.limit

ドキュメント

$vectorSearch集計ステージの limit 値に関連するメトリクス

metrics
.supplementalMetrics
.vectorSearch
.numCandidatesLimitRatio

ドキュメント

$vectorSearch集計ステージの numCandidates 値に関連するメトリクス。$queryStats はこれらのメトリクスを、numCandidates を limit 値で割った比率として表します。

このセクションの例を実行するには、次のデータで を開始します。

db.products.insertMany(
[
{ item: "card", qty: 15 },
{ item: "envelope", qty: 20 },
{ item: "stamps" , qty: 30 }
]
)

次に、次のコマンドを実行します。

db.products.find( { item: "card" } )
db.products.aggregate( [
{
$match: { qty: { $gt: 20 } }
}
] )

次の例は、さまざまなタイプのデータ変換を使用した$queryStatsの出力を示しています。

次のセクションの例: $queryStats の出力は、他のコマンドの実行によって異なる場合があります。

入力:

db.getSiblingDB("admin").aggregate( [
{
$queryStats: { }
}
] )

出力:

[
{
key: {
queryShape: {
cmdNs: { db: 'test', coll: 'products' },
command: 'find',
filter: { item: { '$eq': '?string' } }
},
client: {
driver: { name: 'nodejs|mongosh', version: '5.1.0' },
os: {
type: 'Darwin',
name: 'darwin',
architecture: 'arm64',
version: '22.6.0'
},
platform: 'Node.js v16.19.1, LE (unified)',
version: '5.1.0|1.8.0',
application: { name: 'mongosh 1.8.0' }
},
collectionType: 'collection'
},
keyHash: 'dsoJ+LHAru0z6MJ1/IygJnnLTrlpVYYmPnlmNZbZrLI=',
queryShapeHash: "uxMLCvpiJ5N/IRqt4c28/0A8F01C8AA16CA805FF5C1A5737535F97E40C2A90CE91A82CCB7A74C7CCB9C48",
metrics: {
lastExecutionMicros: Long("4254"),
execCount: Long("1"),
totalExecMicros: {
sum: Long("4254"),
max: Long("4254"),
min: Long("4254"),
sumOfSquares: Decimal128("18096516")
},
firstResponseExecMicros: {
sum: Long("4254"),
max: Long("4254"),
min: Long("4254"),
sumOfSquares: Decimal128("18096516")
},
docsReturned: {
sum: Long("1"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("1")
},
planningTimeMicros: {
sum: Long("2150"),
max: Long("2150"),
min: Long("2150"),
sumOfSquares: Decimal128("4622500")
},
costBasedRanker: {
cardinalityEstimationMethods: {
Histogram: Long("0"),
Sampling: Long("0"),
Heuristics: Long("0"),
Mixed: Long("0"),
Metadata: Long("0"),
Code: Long("0")
},
nDocsSampled: {
sum: Long("0"),
max: Long("0"),
min: Long("0"),
sumOfSquares: Decimal128("0")
}
},
firstSeenTimestamp: ISODate("2023-09-14T12:30:27.989Z"),
latestSeenTimestamp: ISODate("2023-09-14T12:30:27.989Z")
},
asOf: Timestamp({ t: 1694695007, i: 0 })
},
{
key: {
queryShape: {
cmdNs: { db: 'test', coll: 'products' },
command: 'aggregate',
pipeline: [
{ '$match': { qty: { '$gt': '?number' } } }
]
},
apiVersion: '1',
client: {
driver: { name: 'nodejs|mongosh', version: '5.1.0' },
os: {
type: 'Darwin',
name: 'darwin',
architecture: 'arm64',
version: '22.6.0'
},
platform: 'Node.js v16.19.1, LE (unified)',
version: '5.1.0|1.8.0',
application: { name: 'mongosh 1.8.0' }
},
collectionType: 'collection',
cursor: { batchSize: '?number' }
},
keyHash: '2QLBfL0m1lliStdN4XvBjqVBtZQ6ffaB2L1pJ99twT8=',
queryShapeHash: "uxMLCvpiJ5N/IRqt4c28/0A8F01C8AA16CA805FF5C1A5737535F97E40C2A90CE91A82CCB7A74C7CCB9C48",
metrics: {
lastExecutionMicros: Long("350"),
execCount: Long("3"),
totalExecMicros: {
sum: Long("3084"),
max: Long("2499"),
min: Long("235"),
sumOfSquares: Decimal128("6422726")
},
firstResponseExecMicros: {
sum: Long("3084"),
max: Long("2499"),
min: Long("235"),
sumOfSquares: Decimal128("6422726")
},
docsReturned: {
sum: Long("3"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("3")
},
planningTimeMicros: {
sum: Long("1850"),
max: Long("850"),
min: Long("420"),
sumOfSquares: Decimal128("1252500")
},
costBasedRanker: {
cardinalityEstimationMethods: {
Histogram: Long("0"),
Sampling: Long("0"),
Heuristics: Long("0"),
Mixed: Long("0"),
Metadata: Long("0"),
Code: Long("0")
},
nDocsSampled: {
sum: Long("0"),
max: Long("0"),
min: Long("0"),
sumOfSquares: Decimal128("0")
}
},
firstSeenTimestamp: ISODate("2023-11-29T21:16:17.796Z"),
latestSeenTimestamp: ISODate("2023-11-29T21:17:12.385Z")
},
asOf: Timestamp({ t: 1701292827, i: 0 })
}
]

入力:

db.getSiblingDB("admin").aggregate( [
{
$queryStats: {
transformIdentifiers: {
algorithm: "hmac-sha-256" ,
hmacKey: BinData(8, "87c4082f169d3fef0eef34dc8e23458cbb457c3sf3n2")
}
}
}
] )

出力:

[
{
key: {
queryShape: {
cmdNs: {
db: 'Mtrt3iG7dsX5c5uCSIhSVlcu5qD3u3xx2EQnS1dJLxM=',
coll: '3oJE6AyOuf8h5NqWiXETxulFlPm3QUXbMnMjL2EqAU4='
},
command: 'find',
filter: {
'VWVRow7Ure92ajRPfrpWiU8OtDeWcLePFIq0+tooBng=': { '$eq': '?string' }
}
},
client: {
driver: { name: 'nodejs|mongosh', version: '5.1.0' },
os: {
type: 'Darwin',
name: 'darwin',
architecture: 'arm64',
version: '22.6.0'
},
platform: 'Node.js v16.19.1, LE (unified)',
version: '5.1.0|1.8.0',
application: { name: 'mongosh 1.8.0' }
},
collectionType: 'collection'
},
keyHash: 'q4vxam+wbk8tTrl8D0MDFH1LQAbI8fWspfkGKhEUROk=',
queryShapeHash: "uxMLCvpiJ5N/IRqt4c28/0A8F01C8AA16CA805FF5C1A5737535F97E40C2A90CE91A82CCB7A74C7CCB9C48",
metrics: {
lastExecutionMicros: Long("4254"),
execCount: Long("1"),
keysExamined: {
sum: Int("5"),
max: Long("5"),
min: Long("5"),
sumOfSquares: Decimal128("25")
},
docsExamined: {
sum: Long("1"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("1")
},
hasSortStage: {true: Long("0"), false: Long("1")},
usedDisk: {true: Long("0"), false: Long("1")},
fromMultiPlanner: {true: Long("0"), false: Long("1")},
fromPlanCache: {true: Long("1"), false: Long("0")},
totalExecMicros: {
sum: Long("4254"),
max: Long("4254"),
min: Long("4254"),
sumOfSquares: Decimal128("18096516")
},
firstResponseExecMicros: {
sum: Long("4254"),
max: Long("4254"),
min: Long("4254"),
sumOfSquares: Decimal128("18096516")
},
docsReturned: {
sum: Long("1"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("1")
},
planningTimeMicros: {
sum: Long("2150"),
max: Long("2150"),
min: Long("2150"),
sumOfSquares: Decimal128("4622500")
},
costBasedRanker: {
cardinalityEstimationMethods: {
Histogram: Long("0"),
Sampling: Long("0"),
Heuristics: Long("0"),
Mixed: Long("0"),
Metadata: Long("0"),
Code: Long("0")
},
nDocsSampled: {
sum: Long("0"),
max: Long("0"),
min: Long("0"),
sumOfSquares: Decimal128("0")
}
},
firstSeenTimestamp: ISODate("2023-09-14T12:30:27.989Z"),
latestSeenTimestamp: ISODate("2023-09-14T12:30:27.989Z")
},
asOf: Timestamp({ t: 1694695712, i: 0 })
},
{
key: {
queryShape: {
cmdNs: {
db: 'Mtrt3iG7dsX5c5uCSIhSVlcu5qD3u3xx2EQnS1dJLxM=',
coll: '3oJE6AyOuf8h5NqWiXETxulFlPm3QUXbMnMjL2EqAU4='
},
command: 'aggregate',
pipeline: [
{
'$match': {
'RVqrwNEPotzdKnma/T7s4YcgNvpqO29BMDoni2N4IMI=': { '$gt': '?number' }
}
}
]
},
apiVersion: '1',
client: {
driver: { name: 'nodejs|mongosh', version: '5.1.0' },
os: {
type: 'Darwin',
name: 'darwin',
architecture: 'arm64',
version: '22.6.0'
},
platform: 'Node.js v16.19.1, LE (unified)',
version: '5.1.0|1.8.0',
application: { name: 'mongosh 1.8.0' }
},
collectionType: 'collection',
cursor: { batchSize: '?number' }
},
keyHash: 'HEhpQTYB+/wVoHLkOkMd+EC2jguQlMJ1N/vTE7+b8Js=',
queryShapeHash: "uxMLCvpiJ5N/IRqt4c28/0A8F01C8AA16CA805FF5C1A5737535F97E40C2A90CE91A82CCB7A74C7CCB9C48",
metrics: {
lastExecutionMicros: Long("350"),
execCount: Long("3"),
keysExamined: {
sum: Int("5"),
max: Long("5"),
min: Long("5"),
sumOfSquares: Decimal128("25")
},
docsExamined: {
sum: Long("1"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("1")
},
hasSortStage: {true: Long("0"), false: Long("1")},
usedDisk: {true: Long("0"), false: Long("1")},
fromMultiPlanner: {true: Long("0"), false: Long("1")},
fromPlanCache: {true: Long("1"), false: Long("0")},
totalExecMicros: {
sum: Long("3084"),
max: Long("2499"),
min: Long("235"),
sumOfSquares: Decimal128("6422726")
},
firstResponseExecMicros: {
sum: Long("3084"),
max: Long("2499"),
min: Long("235"),
sumOfSquares: Decimal128("6422726")
},
docsReturned: {
sum: Long("3"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("3")
},
planningTimeMicros: {
sum: Long("1850"),
max: Long("850"),
min: Long("420"),
sumOfSquares: Decimal128("1252500")
},
costBasedRanker: {
cardinalityEstimationMethods: {
Histogram: Long("0"),
Sampling: Long("0"),
Heuristics: Long("0"),
Mixed: Long("0"),
Metadata: Long("0"),
Code: Long("0")
},
nDocsSampled: {
sum: Long("0"),
max: Long("0"),
min: Long("0"),
sumOfSquares: Decimal128("0")
}
},
firstSeenTimestamp: ISODate("2023-11-29T21:16:17.796Z"),
latestSeenTimestamp: ISODate("2023-11-29T21:17:12.385Z")
},
asOf: Timestamp({ t: 1701293302, i: 0 })
},
]

MongoDB Node.jsドライバーを使用して $queryStats ステージを集計パイプラインに追加するには、パイプラインオブジェクトで $queryStats 演算子を使用します。

変換されていない例

次の例では、記録されたクエリに関する非変換ランタイム統計を出力するパイプラインステージを作成します。次に、この例では集計パイプラインを実行します。

const pipeline = [{ $queryStats: {} }];
const adminDb = client.db("admin");
const cursor = adminDb.aggregate(pipeline);
return cursor;

変換されたクエリ統計を返すには、パイプラインステージに transformIdentifiersフィールドを含めます。

const pipeline = [
{
$queryStats: {
transformIdentifiers: {
algorithm: "hmac-sha-256",
hmacKey: new Binary(Buffer.from("87c4082f169d3fef0eef34dc8e23458cbb457c3aabbccddeeff00112233445566778899", "hex"), 8)
}
}
}
];
const adminDb = client.db("admin");
const cursor = adminDb.aggregate(pipeline);
return cursor;

MongoDB Atlas は定期的に$queryStatsを使用してクエリに関する匿名化データを収集し、MongoDB 製品の改善に役立ちます。 データは、使用状況に基づいて機能の提案を作成する目的でも使用される場合があります。 MongoDB は$queryStatsで収集したデータを 4 年間保持します。

Atlas が配置で$queryStatsを実行する場合、Atlas 組織ごとに一意の HMAC キーを使用してデータを変換し、機密情報の収集を回避します。