mergeChunks
¶对于分片集合,mergeChunks
将分片上的连续块范围合并为一个块。从实例mergeChunks
在admin
数据库
上发出命令mongos
。
mergeChunks
具有以下形式:
对于复合分片密钥,必须在bounds
规范中包括完整的分片密钥
。例如,如果分片键为,则格式如下:{ x: 1, y:
1 }
mergeChunks
该mergeChunks
命令包含以下字段:
领域 | 类型 | 描述 |
---|---|---|
mergeChunks |
命名空间 | 这
两个块都存在的集合的完全限定名称空间。命名空间采用的形式
。<database>.<collection> |
bounds |
数组 | 包含新块的最小和最大键值的数组。 |
注意
使用mergeChunks
只有在特殊情况下。例如,在删除许多文档后清理分片群集时。
为了成功合并块,必须满足以下条件:
bounds
字段中,<minkey>
并且<maxkey>
必须对应于要合并的块的上下限。mergeChunks
如果不满足这些条件,则返回错误。
成功后,mergeChunks
返回到以下文档:
mergeChunks
如果chunks
集合上正在进行另一个元数据操作,则返回以下错误消息:
如果另一个进程(例如平衡器进程)在mergeChunks
运行时更改元数据,
则可能会看到此错误。您可以重试该mergeChunks
操作,而不会产生副作用。
如果输入块不在同一个碎片,
mergeChunks
返回类似如下的错误:
如果输入块不连续,则
mergeChunks
返回类似于以下内容的错误: