Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
データベース マニュアル
/ / /

$collStats(集計ステージ)

$collStats

コレクションまたはビューに関する統計情報を返します。

$collStatsステージのプロトタイプ形式は次のとおりです。

{
$collStats:
{
latencyStats: { histograms: <boolean> },
storageStats: { scale: <number> },
count: {},
queryExecStats: {}
}
}

$collStatsステージは、次の任意フィールドを持つ 引数ドキュメントを受け入れます。

フィールド名
説明

latencyStats

返されたドキュメントに レイテンシ統計を追加します。

latencyStats.histograms

の場合、 の埋め込みドキュメントにレイテンシ ヒストグラム情報を追加します。latencyStatstrue

storageStats

返されるドキュメントにストレージ統計を追加します。

  • 空のドキュメント(つまり 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プロセスのホスト名とポート。

localTime

MongoDB サーバー上の現在時刻( UNIX エポックからの UTC ミリ秒で表示)。

latencyStats

コレクションまたはビューのリクエストレイテンシに関連する統計情報。このドキュメントの詳細については、latencyStats ドキュメントを参照してください。

latencyStats: {}オプションが指定されている場合にのみ存在します。

storageStats

コレクションのストレージエンジンに関連する統計情報。このドキュメントの詳細については、storageStats ドキュメントを参照してください。

各種サイズデータは指定された係数でスケーリングされます(フィールド名に測定単位が指定されているサイズを除く)。

storageStatsオプションが指定されている場合にのみ存在します。

ビューに適用されると、エラーを返します。

count

コレクション内のドキュメントの合計数。 このデータはstorageStats.countでも利用できます。

カウントはコレクションのメタデータに基づいています。これにより、シャーディングされたクラスターに対して高速ではあるが不正確なカウントが提供されることもあります。

count: {}オプションが指定されている場合にのみ存在します。 ビューに適用されると、エラーを返します。

queryExecStats

コレクションのクエリ実行に関連する統計。

queryExecStats: {}オプションが指定されている場合にのみ存在します。 ビューに適用されると、エラーを返します。

$collStats は、集計パイプラインの最初のステージである必要があります。そうでない場合、パイプラインはエラーを返します。

Wired Tigerストレージエンジンを使用してmongod を不正にシャットダウンした後、$collStats によって報告されるサイズとカウントの統計が不正確になる可能性があります。

ドリフトの量は、チェックポイントからクリーン シャットダウンまでの間に実行された挿入、アップデート、または削除操作の数によって異なります。チェックポイントは通常、60 秒ごとに発現します。ただし、デフォルト以外の --syncdelay 設定で実行されている mongod インスタンスでは、チェックポイントの頻度が増減する可能性があります。

不正なシャットダウン後に統計を復元するには、mongod の各コレクションに対して validate を実行します。

不正なシャットダウン後:

  • validatecollStatsは、 出力のカウント統計を最新の値でアップデートします。

  • collStats 出力で挿入または削除されたドキュメントの数などのその他の統計は推定値です。

$collStats トランザクションでは許可されていません。

latencyStats埋め込みドキュメントは、 latencyStatsオプションを指定した場合にのみ出力に存在します。

フィールド名
説明

reads

読み取りリクエストのレイテンシ統計

writes

書込み (write) リクエストのレイテンシ統計

commands

データベースコマンドのレイテンシ統計

これらの各フィールドには、次のフィールドを含む埋め込みドキュメントが含まれています。

フィールド名
説明

latency

合計レイテンシをマイクロ秒単位で示す 64 ビットの整数。

ops

起動以降にコレクションで実行された操作の合計数を示す 64 ビットの整数。

histogram

それぞれがレイテンシ範囲を表す埋め込みドキュメントの配列。 各ドキュメントは、前のドキュメントの範囲の 2 倍をカバーします。 2048マイクロ秒から約1秒の間の低い値の場合、ヒストグラムには半ステップが含まれます。

このフィールドは、 latencyStats: { histograms: true }オプションでのみ存在します。 ゼロのcountがある空の範囲は出力から省略されます。

各ドキュメントには、次のフィールドが含まれます。

フィールド名

説明

micros

現在のレイテンシ範囲の包括的下限をマイクロ秒単位で提供する64ビット整数。

ドキュメントの範囲は、前のドキュメントのmicros値(排他的)とこのドキュメントのmicros値(包括的)の間です。

count

レイテンシがmicros以下の操作の数を表す 64 ビットの整数。

たとえば、 collStatsが次のヒストグラムを返す場合、次のようになります。

histogram: [
{ micros: Long(0), count: Long(10) },
{ micros: Long(2), count: Long(1) },
{ micros: Long(4096), count: Long(1) },
{ micros: Long(16384), count: Long(1000) },
{ micros: Long(49152), count: Long(100) }
]

これは、次のことがあったことを示しています。

  • マイクロ秒以下を使用する10 操作2

  • 範囲 [ 2 、 4 )マイクロ秒の1操作

  • 範囲 [ 4096 、 6144 )マイクロ秒の1操作

  • 範囲 [ 16384 、 24576 )マイクロ秒の1000操作

  • 範囲 [ 49152 、 65536 )マイクロ秒の100操作

[1]
  • このページの(記号表記は、値が排他的であることを意味します。
  • このページの]記号表記は、値が包括的であることを意味します。

一部の高レイテンシの$lookup 操作では、外部コレクションの低速クエリログが生成されないことがあります。これは、低速クエリ ログはデータベースプロファイラで報告される操作に対応するために発生する可能性があり、レイテンシメトリクスはコレクションロックが取得された場合にのみ増加するためです。

シャードに対する $lookup クエリがローカル読み取りを実行できる場合、$lookup は 外部コレクションをクエリするための別の操作をレコードません。 ローカル読み取りは、外部コレクションのクエリが、現在の操作が実行されているのと同じシャードのみを対象としている場合の を指します。 その結果、$lookup操作によって $collStatsレイテンシメトリクスと操作数が増加しますが、外部コレクションに対して低速クエリログは生成されません。

storageStats埋め込みドキュメントは、 storageStatsオプションを指定した場合にのみ出力に存在します。

このドキュメントの内容は、使用しているストレージ エンジンによって異なります。 このドキュメントの参照については出力を参照してください。

storageStats: {} オプションを使用して時系列コレクションで $collStats を実行すると、出力に時系列データが含まれます。

timeseries: {}ドキュメントで返されるフィールドの詳細については、バケットカタログを参照してください。

ビューでstorageStatsオプションを使用して$collStatsを実行すると、エラーが発生します。

countフィールドは、 countオプションを指定した場合にのみ出力に存在します。

注意

カウントはコレクションのメタデータに基づいています。これにより、シャーディングされたクラスターに対して高速ではあるが不正確なカウントが提供されることもあります。

コレクション内のドキュメントの合計数は、storageStats: {} が指定されている場合は storageStats.count として使用することもできます。詳細については、storageStats ドキュメント を参照してください。

queryExecStats埋め込みドキュメントは、queryExecStats オプションを指定した場合にのみ出力に存在します。これには、次のフィールドを含む埋め込み collectionScansドキュメントが含まれています。

フィールド名
説明

total

コレクションスキャンを実行したクエリの合計数。

nonTailable

コレクションスキャンを実行したが、追尾可能 (tailable) カーソルを使用しなかったクエリの数。

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)
}
}
}

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
}

$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 には、インデックスがビルド中に関する情報が含まれています。詳細については、「 」を参照してください。

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
}

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 は、 シャーディングされたコレクションで実行されると、シャードごとに 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 オプションを使用して $collStatsパイプラインステージを作成し、実行します。

const pipeline = [
{
$collStats: {
latencyStats: {histograms: true}
}
}
];
const cursor = collection.aggregate(pipeline);
return cursor;

次の例では、storageStats オプションを使用して $collStatsパイプラインステージを作成し、実行します。

const pipeline = [{ $collStats: { storageStats: {} } }];
const cursor = collection.aggregate(pipeline);
return cursor;

次の例では、時系列コレクションで$collStats storageStats オプションを使用して パイプラインステージを作成して実行し、時系列データのみをフィルタリングします。

const pipeline = [{ $collStats: { storageStats: {} } }];
const cursor = collection.aggregate(pipeline);
const timeSeriesStats = resultsTimeSeries[0].storageStats.timeseries;
return timeSeriesStats;

次の例では、コレクションで count オプションを使用して $collStatsパイプラインステージを実行します。

const pipeline = [{ $collStats: { count: {} } }];
const cursor = collection.aggregate(pipeline);
return cursor;

次の例では、 queryExecStats オプションを使用して $collStatsパイプラインステージを作成し、実行します。

const pipeline = [{ $collStats: { queryExecStats: {} } }];
const cursor = collection.aggregate(pipeline);
return cursor;

注意

シャーディングされたコレクション

$collStats は、シャーディングされたコレクションで実行されると、シャードごとに 1 つのドキュメントを出力します。各出力ドキュメントには、ドキュメントが対応するシャードの名前を含むシャードフィールドが含まれています。

Tip

戻る

$changeStreamSplitLargeEvent

項目一覧