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