AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

$shardedDataDistribution(集計ステージ)

$shardedDataDistribution

バージョン6.0.3の新機能。

シャーディングされたコレクション内のデータの分散に関する情報を返します。

注意

この集計ステージはmongosでのみ使用できます。

この集計ステージはadminデータベースで実行する必要があります。 ユーザーにはshardedDataDistribution特権アクションが必要です。

shardedDataDistribution ステージの構文は次のとおりです。

db.aggregate( [ { $shardedDataDistribution: { } }] )

$shardedDataDistributionステージは、 データベース内のシャーディングされた各コレクションのドキュメントの配列を出力します。 これらのドキュメントには、次のフィールドが含まれています。

フィールド名
データ型
説明

ns

string

シャーディングされたコレクションの名前空間。

shards

配列

各シャードのデータ配信情報を含む コレクション内の シャード 。

shards.numOrphanedDocs

integer

シャード内の 孤立したドキュメント の数。

shards.numOwnedDocuments

integer

シャードが所有するドキュメントの数。

shards.ownedSizeBytes

integer

非圧縮時にシャードが所有するドキュメントのサイズ(バイト単位)。

shards.orphanedSizeBytes

integer

シャード内の 孤立したドキュメント の非圧縮時のサイズ(バイト単位)。

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

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

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

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

すべてのシャーディングされたデータ分布のメトリクスを返すには、次のコマンドを実行します。

db.aggregate([ { $shardedDataDistribution: { } }])

出力例:

[ { "ns": "test.names", "shards": [ { "shardName": "shard-1", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 }, { "shardName": "shard-2", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 } ] }]

特定のシャードのシャーディングされたデータ分布のメトリクスを返すには、次のコマンドを実行します。

db.aggregate([ { $shardedDataDistribution: { } }, { $match: { "shards.shardName": "<name of the shard>" } }])

名前空間 のシャーディングされたデータ配信データを返すには、次のコマンドを実行します。

db.aggregate([ { $shardedDataDistribution: { } }, { $match: { "ns": "<database>.<collection>" } }])

MongoDB 6.0.3以降、 $shardedDataDistributionステージを使用して集計を実行すると、孤立したドキュメントが残っていないことを確認できます。

db.aggregate([ { $shardedDataDistribution: { } }, { $match: { "ns": "<database>.<collection>" } }])

$shardedDataDistribution には、次のような出力があります。

[ { "ns": "test.names", "shards": [ { "shardName": "shard-1", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 }, { "shardName": "shard-2", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 } ] }]

クラスター内の各シャードで"numOrphanedDocs"が0であることを確認します。