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

mergeChunks(データベースコマンド)

mergeChunks

シャーディングされたコレクションの場合、 mergeChunksはシャード上の連続したチャンク範囲を 1 つのチャンクに結合します。 mergeChunksadminインスタンスからmongos データベースに対して コマンドを発行します。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

このコマンドの構文は、次のとおりです。

db.adminCommand( { mergeChunks: <namespace>, bounds : [ { <shardKeyField>: <minFieldValue> }, { <shardKeyField>: <maxFieldValue> } ] })

複合シャードキーの場合、 bounds仕様に完全なシャードキーを含める必要があります。 たとえば、シャードキーが{ x: 1, y: 1 }の場合、 mergeChunksの形式は次のようになります。

db.adminCommand( { mergeChunks: <namespace>, bounds: [ { x: <minValue>, y: <minValue> }, { x: <maxValue>, y: <maxValue> } ] } )

このコマンドは、次のフィールドを使用します。

フィールド
タイプ
説明

mergeChunks

namespace

両方の チャンク が存在する コレクション の完全修飾 名前空間 。名前空間は<database>.<collection>の形式をとります。

bounds

配列

新しい チャンク の最小キー値と最大キー値を含む配列。

authorizationを使用して実行されている配置では、組み込みロールclusterManagerは必要な特権を提供します。

注意

mergeChunksは特別な状況でのみ使用してください。 たとえば、多くのドキュメントを排除した後にシャーディングされたクラスターをクリーンアップする場合。

チャンクを正常にマージするには、次の条件を満たす必要があります。

  • boundsフィールドでは、 <minkey>と<maxkey>はマージするチャンクの下限と上限に対応する必要があります。

  • チャンクは同じシャード上に存在する必要があります。

  • チャンクは連続している必要があります。

mergeChunks これらの条件が満たされない場合、 はエラーを返します。

成功すると、 mergeChunksは次のドキュメントを返します。

{ "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1510767081, 1), "signature" : { "hash" : BinData(0,"okKHD0QuzcpbVQg7mP2YFw6lM04="), "keyId" : Long("6488693018630029321") } }, "operationTime" : Timestamp(1510767081, 1)}

mergeChunks{chunks コレクションで別のメタデータ操作が進行中の場合、 は次のエラー メッセージを返します。

errmsg: "The collection's metadata lock is already taken."

mergeChunksの実行中にバランサー プロセスなどの別のプロセスがメタデータを変更すると、このエラーが表示されることがあります。 副作用のないmergeChunks操作の再試行が可能です。

入力チャンクが同じシャードにない場合、 mergeChunksは次のようなエラーを返します。

{ "ok" : 0, "errmsg" : "could not merge chunks, collection test.users does not contain a chunk ending at { username: \"user63169\" }", "$clusterTime" : { "clusterTime" : Timestamp(1510767081, 1), "signature" : { "hash" : BinData(0,"okKHD0QuzcpbVQg7mP2YFw6lM04="), "keyId" : Long("6488693018630029321") } }, "operationTime" : Timestamp(1510767081, 1)}

入力チャンクが連続していない場合、 mergeChunksは次のようなエラーを返します。

{ "ok" : 0, "errmsg" : "could not merge chunks, collection test.users has more than 2 chunks between [{ username: \"user29937\" }, { username: \"user49877\" })" "$clusterTime" : { "clusterTime" : Timestamp(1510767081, 1), "signature" : { "hash" : BinData(0,"okKHD0QuzcpbVQg7mP2YFw6lM04="), "keyId" : Long("6488693018630029321") } }, "operationTime" : Timestamp(1510767081, 1) }