- Reference >
- Database Commands >
- Sharding Commands >
- mergeChunks
mergeChunks¶
On this page
Definition¶
-
mergeChunks
¶ For a sharded collection,
mergeChunks
combines contiguous chunk ranges on a shard into a single chunk. Issue themergeChunks
command from amongos
instance.mergeChunks
has the following form:db.runCommand( { mergeChunks : <namespace> , bounds : [ { <shardKeyField>: <minFieldValue> }, { <shardKeyField>: <maxFieldValue> } ] } )
For compound shard keys, you must include the full shard key in the
bounds
specification. If the shard key is{ x: 1, y: 1 }
,mergeChunks
has the following form:db.runCommand( { mergeChunks : <namespace> , bounds : [ { x: <minValue>, y: <minValue> }, { x: <maxValue>, y: <maxValue> } ] } )
The
mergeChunks
command has the following fields:Field Type Description mergeChunks
namespace The fully qualified namespace of the collection where both chunks exist. Namespaces take form of <database>.<collection>
.bounds
array An array that contains the minimum and maximum key values of the new chunk.
Behavior¶
Note
Use the mergeChunks
only in special circumstances. For
instance, when cleaning up your sharded cluster after removing
many documents.
In order to successfully merge chunks, the following must be true:
- In the
bounds
field,<minkey>
and<maxkey>
must correspond to the lower and upper bounds of the chunks to merge. - The chunks must reside on the same shard.
- The chunks must be contiguous.
mergeChunks
returns an error if these conditions are not
satisfied.
Return Messages¶
On success, mergeChunks
returns to following document:
{ "ok" : 1 }
Another Operation in Progress¶
mergeChunks
returns the following error message if another
metadata operation is in progress on the chunks
collection:
errmsg: "The collection's metadata lock is already taken."
If another process, such as balancer process, changes metadata while
mergeChunks
is running, you may see this error. You can
retry the mergeChunks
operation without side effects.