shardCollection
¶分片集合,用于在分片中分发其文档。enableSharding
在运行shardCollection
命令之前,必须在数据库上运行。该shardCollection
命令必须针对admin
数据库运行
。
要运行shardCollection
,请使用方法。db.runCommand( { <command> } )
shardCollection
具有以下形式:
shardCollection
具有以下字段:
领域 | 类型 | 描述 |
---|---|---|
shardCollection |
串 | 以形式分片的集合
的名称空间<database>.<collection> 。 |
key |
文献 | 索引规范文件用作分片 键。分片键确定MongoDB如何在分片之间分配文档。 索引规范文档的密钥是用作分片密钥的字段。该文档的值必须是以下值之一: 除非集合为空,否则索引必须在 另请参阅分片索引 |
unique |
布尔值 | 当为时true ,该unique 选项可确保基础索引强制执行唯一约束。哈希分片键不支持唯一约束。默认为false 。 |
numInitialChunks |
整数 | 指定使用散列的分片键分片空集合时最初要创建的块数。然后,MongoDB将在整个集群中创建和平衡块。本必须小于每碎片。 在版本4.0.3中更改:如果为空集合定义了区域和区域范围,则该选项无效。请参阅区域分片和初始块分布。 在版本3.4中进行了更改:如果集合不为空或分片键不是哈希键,则该操作将返回错误。 |
collation |
文献 | 可选的。如果指定为的集合shardCollection
具有默认排序规则,则必须包含带有的排序规则文档
,否则命令将失败。其字段支持分片键模式的至少一个索引必须具有简单的排序规则。{ locale : "simple" } shardCollection |
您只能将一个集合分片一次。
不要不运行一个以上的shardCollection
在同一时间在同一个集合命令。
在调用之后,MongoDB没有提供任何方法来停用集合的分片shardCollection
。此外,在之后
shardCollection
,您无法更改分片键的选择。但是,从MongoDB 4.2开始,您可以更新文档的分片键值(除非分片键字段是不可变
_id
字段)。有关详细信息,请参见更改文档的分片键值。
使用表格指定散列的分片键。哈希分片键可能不是复合索引。{field: "hashed"}
注意
如果在创建哈希分片键集合时正在进行块迁移,则初始块分布可能会不均衡,直到平衡器自动平衡该集合为止。
也可以看看
如果已经为收集定义了区域和区域范围,则分片收集操作(即shardCollection
命令和sh.shardCollection()
帮助程序)可以为空或不存在的收集执行初始块创建和分配。初始块分配允许更快地设置分区分片。在初始分配之后,平衡器将按常规管理前进的块分配。
numInitialChunks
如果为空集合定义了区域和区域范围,则该选项无效。
有关示例,请参见为空集合或不存在的集合预定义区域和区域范围。
也可以看看
如果指定:unique: true
shardCollection
则在分片键上创建唯一索引(如果该索引尚不存在)。shardCollection
。尽管您可以拥有一个唯一的复合索引,其中分片键是一个前缀,但如果使用unique
parameter,则集合必须在分片键上具有一个唯一索引。
另请参见分片集合和唯一索引
在版本3.4中更改。
如果集合具有默认排序规则,则该shardCollection
命令必须包含collation
带有值的参数。对于具有默认排序规则的非空集合,您必须至少具有一个简单排序规则的索引,该索引的字段支持分片键模式。{ locale: "simple" }
您无需collation
为没有排序规则的集合指定选项。如果确实为没有排序规则的集合指定排序规则选项,则它将无效。
mongos
使用"majority"
了
写关注的的
shardCollection
命令及其助手
sh.shardCollection()
。