$collStats(集計)
定義
$collStats
バージョン 3.4 で追加。
コレクションまたはビューに関する統計情報を返します。
$collStats
ステージのプロトタイプ形式は次のとおりです。{ $collStats: { latencyStats: { histograms: <boolean> }, storageStats: { scale: <number> }, count: {}, queryExecStats: {} } } $collStats
ステージは、次の任意フィールドを持つ 引数ドキュメントを受け入れます。フィールド名説明latencyStats
返されるドキュメントにレイテンシ統計を追加します。latencyStats.histograms
の場合、 の埋め込みドキュメントにレイテンシ ヒストグラム情報を追加します。latencyStats
true
storageStats
返されるドキュメントにストレージ統計を追加します。
空のドキュメント(つまり
storageStats: {}
)を使用して、さまざまなサイズ データに対してデフォルトのスケール係数 1 を使用します。 スケール係数 1 では、返されたサイズがバイト単位で表示されます。スケール係数を指定します(
storageStats: { scale: <number> }
)を使用して、さまざまなサイズ データに対して指定されたスケール係数を使用します。 たとえば、バイトではなくキロバイトを表示するには、1024のスケール値を指定します。整数以外のスケール係数を指定した場合、MongoDB は指定された係数の整数部分を使用します。たとえば、スケール係数を
1023.999
に指定すると、MongoDB はスケール係数として1023
使用します。スケール係数は、フィールド名に測定単位が指定されているサイズには影響しません(例:
"bytes currently in the cache"
。
count
コレクション内のドキュメントの合計数を返されるドキュメントに追加します。
カウントはコレクションのメタデータに基づいています。これにより、シャーディングされたクラスターに対して高速ではあるが不正確なカウントが提供されることもあります。
count
フィールドを参照バージョン 3.6 の新機能。
queryExecStats
返されるドキュメントにクエリ実行統計を追加します。レプリカセット内のコレクション、またはクラスター内ののシャーディングされていないコレクションの場合、
$collStats
は 1 つのドキュメントを出力します。 シャーディングされたコレクションの場合、$collStats
はシャードごとに 1 つのドキュメントを出力します。 出力ドキュメントには、次のフィールドが含まれます。フィールド名説明ns
要求されたコレクションまたはビューの名前空間。shard
出力ドキュメントが対応するシャードの名前。
$collStats
がシャーディングされたクラスターで実行されている場合にのみ存在します。 シャーディングされたコレクションとシャーディングされていないコレクションの両方でこのフィールドが生成されます。バージョン 3.6 の新機能。
host
出力ドキュメントを生成した
mongod
プロセスのホスト名とポート。バージョン 3.6 の新機能。
localTime
MongoDB サーバー上の現在時刻( UNIX エポックからの UTC ミリ秒で表示)。latencyStats
コレクションまたはビューのリクエスト レイテンシに関連する統計情報。 このドキュメントの詳細については、
latencyStats
ドキュメントを参照してください。latencyStats: {}
オプションが指定されている場合にのみ存在します。storageStats
コレクションのストレージ エンジンに関連する統計情報。 このドキュメントの詳細については、
storageStats
ドキュメントを参照してください。各種サイズデータは指定された係数でスケーリングされます(フィールド名に測定単位が指定されているサイズを除く)。
storageStats
オプションが指定されている場合にのみ存在します。count
コレクション内のドキュメントの合計数。 このデータは
storageStats.count
でも利用できます。カウントはコレクションのメタデータに基づいています。これにより、シャーディングされたクラスターに対して高速ではあるが不正確なカウントが提供されることもあります。
count: {}
オプションが指定されている場合にのみ存在します。 ビューに適用されると、エラーを返します。queryExecStats
コレクションのクエリ実行に関連する統計。
queryExecStats: {}
オプションが指定されている場合にのみ存在します。 ビューに適用されると、エラーを返します。
動作
$collStats
は、集計パイプラインの最初のステージである必要があります。そうでない場合、パイプラインはエラーを返します。
トランザクション
$collStats
トランザクションでは許可されていません。
latencyStats
ドキュメント
latencyStats
埋め込みドキュメントは、 latencyStats
オプションを指定した場合にのみ出力に存在します。
フィールド名 | 説明 |
---|---|
reads | 読み取りリクエストのレイテンシ統計 |
writes | 書込み (write) リクエストのレイテンシ統計 |
commands | データベースコマンドのレイテンシ統計 |
これらの各フィールドには、次のフィールドを含む埋め込みドキュメントが含まれています。
フィールド名 | 説明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
latency | 合計レイテンシをマイクロ秒単位で示す 64 ビットの整数。 | |||||||||||||
ops | 起動以降にコレクションで実行された操作の合計数を示す 64 ビットの整数。 | |||||||||||||
histogram | それぞれがレイテンシ範囲を表す埋め込みドキュメントの配列。 各ドキュメントは、前のドキュメントの範囲の 2 倍をカバーします。 2048マイクロ秒から約1秒の間の低い値の場合、ヒストグラムには半ステップが含まれます。 このフィールドは、 各ドキュメントには、次のフィールドが含まれます。
たとえば、
これは、次のことがあったことを示しています。
|
[1] |
|
たとえば、 matrices
コレクションでlatencyStats: {}
オプションとともに$collStats
を実行すると、次のようになります。
db.matrices.aggregate( [ { $collStats: { latencyStats: { histograms: true } } } ] )
このクエリは、次のような結果を返します。
{ "ns" : "test.matrices", "host" : "mongo.example.net:27017", "localTime" : ISODate("2017-10-06T19:43:56.599Z"), "latencyStats" : { "reads" : { "histogram" : [ { "micros" : NumberLong(16), "count" : NumberLong(3) }, { "micros" : NumberLong(32), "count" : NumberLong(1) }, { "micros" : NumberLong(128), "count" : NumberLong(1) } ], "latency" : NumberLong(264), "ops" : NumberLong(5) }, "writes" : { "histogram" : [ { "micros" : NumberLong(32), "count" : NumberLong(1) }, { "micros" : NumberLong(64), "count" : NumberLong(3) }, { "micros" : NumberLong(24576), "count" : NumberLong(1) } ], "latency" : NumberLong(27659), "ops" : NumberLong(5) }, "commands" : { "histogram" : [ { "micros" : NumberLong(196608), "count" : NumberLong(1) } ], "latency" : NumberLong(0), "ops" : NumberLong(0) }, "transactions" : { "histogram" : [ ], "latency" : NumberLong(0), "ops" : NumberLong(0) } } }
storageStats
ドキュメント
storageStats
埋め込みドキュメントは、 storageStats
オプションを指定した場合にのみ出力に存在します。
このドキュメントの内容は、使用しているストレージ エンジンによって異なります。 このドキュメントの参照については出力を参照してください。
たとえば、 WiredTiger ストレージ エンジンを使用して、 matrices
コレクションでstorageStats: {}
オプションとともに$collStats
を実行した場合、次のようになります。
db.matrices.aggregate( [ { $collStats: { storageStats: { } } } ] )
このクエリは、次のような結果を返します。
{ "ns" : "test.matrices", "host" : "mongo.example.net:27017", "localTime" : ISODate("2020-03-06T01:44:57.437Z"), "storageStats" : { "size" : 608500363, "count" : 1104369, "avgObjSize" : 550, "storageSize" : 352878592, "freeStorageSize" : 2490380, "capped" : false, "wiredTiger" : { ... }, "nindexes" : 2, "indexDetails" : { ... }, "indexBuilds" : [ // Starting in MongoDB 4.2 "_id_1_abc_1" ], "totalIndexSize" : 260337664, "totalSize" : 613216256, "indexSizes" : { "_id_" : 9891840, "_id_1_abc_1" : 250445824 }, "scaleFactor" : 1 // Starting in MongoDB 4.2 } }
このドキュメントの参照については出力を参照してください。
注意
進行中のインデックス
MongoDB 4.2 以降では、返されるstorageStats
にビルド中のインデックスに関する情報が含まれるようになりました。 詳細については、「 」を参照してください。
ビューでstorageStats
オプションを使用して$collStats
を実行すると、エラーが発生します。
count
フィールド
バージョン 3.6 の新機能。
count
フィールドは、 count
オプションを指定した場合にのみ出力に存在します。
たとえば、 matrices
コレクションでcount: {}
オプションとともに$collStats
を実行すると、次のようになります。
db.matrices.aggregate( [ { $collStats: { count: { } } } ] )
このクエリは、次のような結果を返します。
{ "ns" : "test.matrices", "host" : "mongo.example.net:27017", "localTime" : ISODate("2017-10-06T19:43:56.599Z"), "count" : 1103869 }
注意
カウントはコレクションのメタデータに基づいています。これにより、シャーディングされたクラスターに対して高速ではあるが不正確なカウントが提供されることもあります。
コレクション内のドキュメントの合計数は、 storageStats: {}
が指定されている場合はstorageStats.count
として使用することもできます。 詳細については、 storageStats
ドキュメントを参照してください。
queryExecStats
ドキュメント
queryExecStats
埋め込みドキュメントは、 queryExecStats
オプションを指定した場合にのみ出力に存在します。
collectionScans
フィールドには、次のフィールドを含む埋め込みドキュメントが含まれています。
フィールド名 | 説明 |
---|---|
total | コレクションスキャンを実行したクエリの総数を示す 64 ビットの整数。 合計は、追尾可能 (tailable) カーソル を使用したクエリと使用しなかったクエリで構成されています。 |
nonTailable |
たとえば、 matrices
コレクションでqueryExecStats: {}
オプションとともに$collStats
を実行すると、次のようになります。
db.matrices.aggregate( [ { $collStats: { queryExecStats: { } } } ] )
このクエリは、次のような結果を返します。
{ "ns": "test.matrices", "host": "mongo.example.net:27017", "localTime": ISODate("2020-06-03T14:23:29.711Z"), "queryExecStats": { "collectionScans": { "total": NumberLong(33), "nonTailable": NumberLong(31) } } }
$collStats
、シャーディングされたコレクションについて
$collStats
は、 シャーディングされたコレクションで実行されると、シャードごとに 1 つのドキュメントを出力します。 各出力ドキュメントには、ドキュメントが対応するシャードの名前を含むshard
フィールドが含まれています。
たとえば、 matrices
という名前のコレクションでcount: {}
オプションを使用してシャーディングされたコレクションで$collStats
を実行すると、次の動作につながります。
db.matrices.aggregate( [ { $collStats: { count: { } } } ] )
このクエリは、次のような結果を返します。
{ "ns" : "test.matrices", "shard" : "s1", "host" : "s1-mongo1.example.net:27017", "localTime" : ISODate("2017-10-06T15:14:21.258Z"), "count" : 661705 } { "ns" : "test.matrices", "shard" : "s2", "host" : "s2-mongo1.example.net:27017", "localTime" : ISODate("2017-10-06T15:14:21.258Z"), "count" : 442164 }