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