enableSharding()

名称

enableSharding - 修改集合的属性开启分区属性。

语法

db.collectionspace.collection.enableSharding(<options>)

类别

Collection

描述

修改集合的属性开启分区属性。

参数

  • options ( Object必填 )

通过options参数可以修改集合属性,如指定集合的分区键等。可组合使用 options 的如下选项:

  • ShardingKey ( Object ):分区键。(必填)

格式:ShardingKey:{<字段1> : <1|-1>,[<字段2> : <1|-1>, …]}

  1. - 已有的 ShardingKey 会被修改成新的 ShardingKey
  2. - 集合只能存在于一个数据组中,或者集合为没有挂载子表的主表
  • ShardingType ( String ):分区方式,默认为 hash 分区。其可选取值如下:

    • "hash":hash 分区。(默认值)
    • "range":范围分区。格式:ShardingType : "hash" | "range"

    • 集合只能存在于一个数据组中

  • Partition ( Int32 ):分区数。仅当选择 hash 分区时填写, 代表了 hash 分区的个数。其值必须是2的幂。 范围在[2^3,2^20]。

格式:Partition : <分区数>

  1. - 默认值是:4096
  2. - 集合只能存在于一个数据组中
  • AutoSplit ( Bool ):标识是否开启自动切分功能

格式:AutoSplit : true | false

  1. - 默认值是 false
  2. - 集合设置新的 hash 分区键后,可以使用该选项进行自动切分
  3. - 不显式指定 AutoSplit 时,如果该集合修改前无指定 AutoSplit 且从属于某个非系统域,该域的 AutoSplit 参数将作用于此次设置
  4. - 集合之前有指定 AutoSplit false,需要显式设置 AutoSplit true 进行自动切分
  5. - AutoSplit 只能作用于 hash 分区键上
  • EnsureShardingIndex ( Bool ):标识是否创建分区索引

    • 默认值是 trueNote:*
  • 各个选项的具体使用方式见 db.collectionspace.createCL()

  • 分区集合不能修改与分区相关的属性。
  • EnsureShardingIndex 和 AutoSplit 仅对当前该次操作生效,仅当修改分区属性,如 ShardingKey 等时有效

返回值

成功:无。

失败:抛出异常。

错误

enableSharding()函数常见异常如下:

错误码错误类型可能的原因解决方法
-32SDB_OPTION_NOT_SUPPORT选项暂不支持检查当前集合属性,如果是分区集合不能修改与分区相关的属性。

当异常抛出时,可以通过getLastError()获取错误码,或通过getLastErrMsg()获取错误信息。可以参考常见错误处理指南了解更多内容。

版本

v2.10及以上版本。

示例

  • 创建一个普通集合,然后将该集合修改为分区集合:
  1. > db.foo.createCL('bar')
  2. > db.foo.bar.enableSharding( { ShardingKey: { a: 1 }, ShardingType: "hash" } )
  • 创建一个普通集合,然后将该集合修改为分区集合,并且自动切分:
  1. > db.foo.createCL('bar')
  2. > db.foo.bar.enableSharding( { ShardingKey: { a: 1 }, ShardingType: "hash", AutoSplit: true } )