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

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

mergeChunks

シャーディングされたコレクションの場合、mergeChunks はシャード上の連続するチャンク範囲を 1 つのチャンクに結合します。mergeChunks adminインスタンスから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."

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

入力チャンクが同じシャードにない場合、 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)
}