定義
$collStatsコレクションまたはビューに関する統計情報を返します。
$collStatsステージのプロトタイプ形式は次のとおりです。{ $collStats: { latencyStats: { histograms: <boolean> }, storageStats: { scale: <number> }, count: {}, queryExecStats: {} } } $collStatsステージは、次の任意フィールドを持つ 引数ドキュメントを受け入れます。フィールド名説明latencyStatslatencyStats.histogramsの場合、 の埋め込みドキュメントにレイテンシ ヒストグラム情報を追加します。
latencyStatstruestorageStats空のドキュメント(つまり
storageStats: {})を使用して、さまざまなサイズ データに対してデフォルトのスケール係数 1 を使用します。 スケール係数 1 では、返されたサイズがバイト単位で表示されます。スケール係数を指定します(
storageStats: { scale: <number> })を使用して、さまざまなサイズ データに対して指定されたスケール係数を使用します。 たとえば、バイトではなくキロバイトを表示するには、1024のスケール値を指定します。整数以外のスケール係数を指定した場合、MongoDB は指定された係数の整数部分を使用します。たとえば、スケール係数を
1023.999に指定すると、MongoDB はスケール係数として1023使用します。スケール係数は、フィールド名に測定単位が指定されているサイズには影響しません(例:
"bytes currently in the cache"。
countコレクション内のドキュメントの合計数を返されるドキュメントに追加します。
カウントはコレクションのメタデータに基づいています。これにより、シャーディングされたクラスターに対して高速ではあるが不正確なカウントが提供されることもあります。
カウント フィールド を参照
queryExecStatsレプリカセット内のコレクションまたはクラスター内のシャーディングされていないコレクションの場合、
$collStatsは 1 つのドキュメントを出力します。 シャーディングされたコレクションの場合、$collStatsはシャードごとに 1 つのドキュメントを出力します。 出力ドキュメントには、次のフィールドが含まれます。フィールド名説明ns要求されたコレクションまたはビューの名前空間。
shard出力ドキュメントが対応するシャードの名前。
$collStatsがシャーディングされたクラスターで実行されている場合にのみ存在します。 シャーディングされたコレクションとシャーディングされていないコレクションの両方でこのフィールドが生成されます。host出力ドキュメントを生成した
mongodプロセスのホスト名とポート。localTimeMongoDB サーバー上の現在時刻( UNIX エポックからの UTC ミリ秒で表示)。
latencyStatsコレクションまたはビューのリクエストレイテンシに関連する統計情報。このドキュメントの詳細については、latencyStats ドキュメントを参照してください。
latencyStats: {}オプションが指定されている場合にのみ存在します。storageStatsコレクションのストレージエンジンに関連する統計情報。このドキュメントの詳細については、storageStats ドキュメントを参照してください。
各種サイズデータは指定された係数でスケーリングされます(フィールド名に測定単位が指定されているサイズを除く)。
storageStatsオプションが指定されている場合にのみ存在します。countコレクション内のドキュメントの合計数。 このデータは
storageStats.countでも利用できます。カウントはコレクションのメタデータに基づいています。これにより、シャーディングされたクラスターに対して高速ではあるが不正確なカウントが提供されることもあります。
count: {}オプションが指定されている場合にのみ存在します。 ビューに適用されると、エラーを返します。queryExecStatsコレクションのクエリ実行に関連する統計。
queryExecStats: {}オプションが指定されている場合にのみ存在します。 ビューに適用されると、エラーを返します。
動作
$collStats は、集計パイプラインの最初のステージである必要があります。そうでない場合、パイプラインはエラーを返します。
予期しないシャットダウン後の精度
Wired Tigerストレージエンジンを使用してmongod を不正にシャットダウンした後、$collStats によって報告されるサイズとカウントの統計が不正確になる可能性があります。
ドリフトの量は、チェックポイントからクリーン シャットダウンまでの間に実行された挿入、アップデート、または削除操作の数によって異なります。チェックポイントは通常、60 秒ごとに発現します。ただし、デフォルト以外の --syncdelay 設定で実行されている mongod インスタンスでは、チェックポイントの頻度が増減する可能性があります。
不正なシャットダウン後に統計を復元するには、mongod の各コレクションに対して validate を実行します。
不正なシャットダウン後:
トランザクション
$collStats トランザクションでは許可されていません。
出力
latencyStats Document
latencyStats埋め込みドキュメントは、 latencyStatsオプションを指定した場合にのみ出力に存在します。
フィールド名 | 説明 |
|---|---|
| 読み取りリクエストのレイテンシ統計 |
| 書込み (write) リクエストのレイテンシ統計 |
| データベースコマンドのレイテンシ統計 |
これらの各フィールドには、次のフィールドを含む埋め込みドキュメントが含まれています。
フィールド名 | 説明 | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 合計レイテンシをマイクロ秒単位で示す 64 ビットの整数。 | |||||||||||||
| 起動以降にコレクションで実行された操作の合計数を示す 64 ビットの整数。 | |||||||||||||
| それぞれがレイテンシ範囲を表す埋め込みドキュメントの配列。 各ドキュメントは、前のドキュメントの範囲の 2 倍をカバーします。 2048マイクロ秒から約1秒の間の低い値の場合、ヒストグラムには半ステップが含まれます。 このフィールドは、 各ドキュメントには、次のフィールドが含まれます。
たとえば、 これは、次のことがあったことを示しています。
|
| [1] |
|
高レイテンシ $lookup 操作
一部の高レイテンシの$lookup 操作では、外部コレクションの低速クエリログが生成されないことがあります。これは、低速クエリ ログはデータベースプロファイラで報告される操作に対応するために発生する可能性があり、レイテンシメトリクスはコレクションロックが取得された場合にのみ増加するためです。
シャードに対する $lookup クエリがローカル読み取りを実行できる場合、$lookup は 外部コレクションをクエリするための別の操作をレコードません。 ローカル読み取りは、外部コレクションのクエリが、現在の操作が実行されているのと同じシャードのみを対象としている場合の を指します。 その結果、$lookup操作によって $collStatsレイテンシメトリクスと操作数が増加しますが、外部コレクションに対して低速クエリログは生成されません。
storageStats ドキュメント
storageStats埋め込みドキュメントは、 storageStatsオプションを指定した場合にのみ出力に存在します。
このドキュメントの内容は、使用しているストレージ エンジンによって異なります。 このドキュメントの参照については出力を参照してください。
時系列コレクションの storageStats 出力
storageStats: {} オプションを使用して時系列コレクションで $collStats を実行すると、出力に時系列データが含まれます。
timeseries: {}ドキュメントで返されるフィールドの詳細については、バケットカタログを参照してください。
ビューでstorageStatsオプションを使用して$collStatsを実行すると、エラーが発生します。
count フィールド
countフィールドは、 countオプションを指定した場合にのみ出力に存在します。
注意
カウントはコレクションのメタデータに基づいています。これにより、シャーディングされたクラスターに対して高速ではあるが不正確なカウントが提供されることもあります。
コレクション内のドキュメントの合計数は、storageStats: {} が指定されている場合は storageStats.count として使用することもできます。詳細については、storageStats ドキュメント を参照してください。
queryExecStats Document
queryExecStats埋め込みドキュメントは、queryExecStats オプションを指定した場合にのみ出力に存在します。これには、次のフィールドを含む埋め込み collectionScansドキュメントが含まれています。
フィールド名 | 説明 |
|---|---|
| コレクションスキャンを実行したクエリの合計数。 |
| コレクションスキャンを実行したが、追尾可能 (tailable) カーソルを使用しなかったクエリの数。 |
例
latencyStats
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" : Long(16), "count" : Long(3) }, { "micros" : Long(32), "count" : Long(1) }, { "micros" : Long(128), "count" : Long(1) } ], "latency" : Long(264), "ops" : Long(5) }, "writes" : { "histogram" : [ { "micros" : Long(32), "count" : Long(1) }, { "micros" : Long(64), "count" : Long(3) }, { "micros" : Long(24576), "count" : Long(1) } ], "latency" : Long(27659), "ops" : Long(5) }, "commands" : { "histogram" : [ { "micros" : Long(196608), "count" : Long(1) } ], "latency" : Long(0), "ops" : Long(0) }, "transactions" : { "histogram" : [ ], "latency" : Long(0), "ops" : Long(0) } } }
storageStats
WiredTigerストレージ $collStatsstorageStats: {}エンジンを使用して、 コレクションでmatrices オプションを指定して を実行する場合:
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 }
時系列コレクションの storageStats
$collStats次のコマンドは、storageStats: {} weatherWiredTigerストレージ エンジン を使用して 時系列コレクションで オプションを指定して を実行し、時系列データのみをフィルタリングします。
db.weather.aggregate( [ { $collStats: { storageStats: { } } } ] ).toArray()[0].storageStats.timeseries
このクエリは、次のような結果を返します。これには、内部診断用の時系列データが含まれています。
{ bucketsNs: 'test.system.buckets.weather', bucketCount: 12, avgBucketSize: 300, numActiveBuckets: 1, numBucketInserts: 12, numBucketUpdates: 0, numBucketsOpenedDueToMetadata: 1, numBucketsClosedDueToCount: 0, numBucketsClosedDueToSchemaChange: 0, numBucketsClosedDueToSize: 0, numBucketsClosedDueToTimeForward: 11, numBucketsClosedDueToMemoryThreshold: 0, numCommits: 12, numMeasurementsGroupCommitted: 0, numWaits: 0, numMeasurementsCommitted: 12, avgNumMeasurementsPerCommit: 1, numBucketsClosedDueToReopening: 0, numBucketsArchivedDueToMemoryThreshold: 0, numBucketsArchivedDueToTimeBackward: 0, numBucketsReopened: 0, numBucketsKeptOpenDueToLargeMeasurements: 0, numBucketsClosedDueToCachePressure: 0, numBucketsFrozen: 0, numCompressedBucketsConvertedToUnsorted: 0, numBucketsFetched: 0, numBucketsQueried: 0, numBucketFetchesFailed: 0, numBucketQueriesFailed: 1, numBucketReopeningsFailed: 0, numDuplicateBucketsReopened: 0 }
注意
進行中のインデックス
返された storageStats には、インデックスがビルド中に関する情報が含まれています。詳細については、「 」を参照してください。
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 }
queryExecStats
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": Long(33), "nonTailable": Long(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 }
MongoDB Node.jsドライバーを使用して $collStats ステージを集計パイプラインに追加するには、パイプラインオブジェクトで $collStats 演算子を使用します。
次の例は、$collStats ステージで使用できるオプションの使用方法を示しています。
latencyStats
次の例では、latencyStats オプションを使用して $collStatsパイプラインステージを作成し、実行します。
const pipeline = [ { $collStats: { latencyStats: {histograms: true} } } ]; const cursor = collection.aggregate(pipeline); return cursor;
storageStats
次の例では、storageStats オプションを使用して $collStatsパイプラインステージを作成し、実行します。
const pipeline = [{ $collStats: { storageStats: {} } }]; const cursor = collection.aggregate(pipeline); return cursor;
時系列コレクションの storageStats
次の例では、時系列コレクションで$collStats storageStats オプションを使用して パイプラインステージを作成して実行し、時系列データのみをフィルタリングします。
const pipeline = [{ $collStats: { storageStats: {} } }]; const cursor = collection.aggregate(pipeline); const timeSeriesStats = resultsTimeSeries[0].storageStats.timeseries; return timeSeriesStats;
count
次の例では、コレクションで count オプションを使用して $collStatsパイプラインステージを実行します。
const pipeline = [{ $collStats: { count: {} } }]; const cursor = collection.aggregate(pipeline); return cursor;
queryExecStats
次の例では、 queryExecStats オプションを使用して $collStatsパイプラインステージを作成し、実行します。
const pipeline = [{ $collStats: { queryExecStats: {} } }]; const cursor = collection.aggregate(pipeline); return cursor;
注意
シャーディングされたコレクション
$collStats は、シャーディングされたコレクションで実行されると、シャードごとに 1 つのドキュメントを出力します。各出力ドキュメントには、ドキュメントが対応するシャードの名前を含むシャードフィールドが含まれています。