On this page
sh.shardCollection()
在本页面
Definition
sh.shardCollection(* namespace , key , unique , options *)- 使用
key作为shard key分片集合。 sh.shardCollection()接受以下参数:
- 使用
| Parameter | Type | Description |
|---|---|---|
namespace |
string | 集合的namespace以<database>.<collection>的形式分片。 |
key |
document | 用作shard key的索引规范文档。分片键确定 MongoDB 如何在分片之间分配文档。 |
索引规范文档的* key *是用作分片键的字段。文档的“值”必须是以下值之一: 1 for 范围分片"hashed"以指定哈希分片键。除非集合为空,否则索引必须在shardCollection命令之前存在。如果集合为空,则如果尚不存在可支持分片键的索引,则 MongoDB 会在分片集合之前创建索引。 另请参见分片索引 |
||
unique |
布尔值 | 可选。当true时,unique选项可确保基础索引强制执行唯一约束。哈希分片键不支持唯一约束。默认为false。如果指定options文档,则 必填unique 。在为options文档指定值的同时省略unique的值可能会导致分片的集合不正确。 |
options |
文档 | 可选。包含可选字段(包括numInitialChunks和collation)的文档。 |
options参数支持以下选项:
| Parameter | Type | Description |
|---|---|---|
numInitialChunks |
integer | 可选的。指定使用哈希分片键分片* empty *集合时最初要创建的块数。然后,MongoDB 将在整个集群中创建和平衡块。每个分片numInitialChunks必须小于8192。 |
在版本 3.4 中更改:如果集合不为空或分片键不是哈希键,则该操作将返回错误。
| collation |文档|可选。如果指定给shardCollection的集合具有默认的collation,则必须包含带有{ locale : "simple" }的排序规则文档,否则shardCollection命令将失败。 |至少一个其字段支持分片键模式的索引必须具有简单的排序规则。
Considerations
在调用shardCollection之后,MongoDB 没有提供任何方法来停用集合的分片。此外,在shardCollection之后,您无法更改分片键或修改分片键索引中使用的任何字段的值。
Shard Keys
哈希分片键
哈希分片键使用单个字段的哈希索引作为分片键。
使用格式{field: "hashed"}指定散列的分片键。散列键可能不是复合索引。
Note
如果在创建哈希分片键集合时正在进行块迁移,那么直到平衡器自动平衡集合之前,初始块分布可能会不均匀。
See also
Uniqueness
如果指定unique: true:
如果集合为空,则sh.shardCollection()在分片键上创建唯一索引(如果该索引尚不存在)。
如果集合不为空,则必须先使用sh.shardCollection()创建索引。
尽管您可以具有唯一的compound index,其中分片键是prefix,但是如果使用unique参数,则集合必须在分片键上具有唯一索引。
另请参见分片集合和唯一索引
Collation
在版本 3.4 中更改。
如果集合具有默认的collation,则sh.shardCollection命令必须包含一个值为{ locale: "simple" }的collation参数。对于具有默认排序规则的非空集合,您必须至少具有一个简单排序规则的索引,该索引的字段支持分片键模式。
您无需为没有排序规则的集合指定collation选项。如果确实为没有排序规则的集合指定排序规则选项,则它将无效。
Examples
Simple Usage
给定名为records的数据库中的名为people的集合,以下命令通过zipcode字段对该集合进行分片:
sh.shardCollection("records.people", { zipcode: 1 } )
选项的用法
phonebook数据库具有集合contacts,没有默认值collation。以下示例使用sh.shardCollection()将phonebook.contacts分片为:
sh.shardCollection(
"phonebook.contacts",
{ last_name: "hashed" },
false,
{
numInitialChunks: 5,
collation: { locale: "simple" }
}
)
See also