文档中心

alter()

名称

alter - 修改集合的属性。

语法

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

类别

Collection

描述

修改集合的属性。

请参考 db.collectionspace.collection.setAttributes()

参数

  • options ( Object必填 )

    通过options参数可以修改集合属性,如指定集合的分区键, 是否以压缩的形式插入数据等。可组合使用 options 的如下选项:

    1. ReplSize ( Int32 ):写操作需同步的副本数。其可选取值如下:

      • -1:表示写请求需同步到该复制组若干活跃的节点之后,数据库写操作才 返回应答给客户端。
      • 0:表示写请求需同步到该复制组的所有节点之后,数据库写操作才返回应 答给客户端。
      • 1 - 7:表示写请求需同步到该复制组指定数量个节点之后,数据库写操作 才返回应答给客户端。

      格式:ReplSize: <num>

    2. ShardingKey ( Object ):分区键。

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

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

      • "hash":hash 分区。
      • "range":范围分区。

      格式:ShardingType : "hash" | "range"

      • 集合只能存在于一个数据组中
    4. Partition ( Int32 ):分区数。仅当选择 hash 分区时填写, 代表了 hash 分区的个数。其值必须是2的幂。 范围在[2^3,2^20]。

      格式:Partition : <分区数>

      • 集合只能存在于一个数据组中
    5. AutoSplit ( Bool ):标识新集合是否开启自动切分功能

      格式:AutoSplit : true | false

      • 集合设置新的 hash 分区键后,可以使用该选项进行自动切分
    6. EnsureShardingIndex ( Bool ):标识是否创建分区索引

      • 默认值是 true
    7. Compressed ( Bool ):标识集合是否开启数据压缩功能。

      格式:Compressed : true | false

      • 如果设置 Compressed 为 true,而没有指定 CompressionType,则 CompressionType 为 "snappy"
    8. CompressionType ( String ):集合的压缩算法,"snappy" 或者 "lzw"。

      • "snappy":使用 snappy 算法压缩。
      • "lzw":使用 lzw 算法压缩。

      格式:CompressionType : "snappy" | "lzw"

    9. StrictDataMode ( Bool ):标识对该集合的操作是否开启严格数据类型模式

      格式:StrictDataMode : true | false

    10. AutoIncrement ( Object ):自增字段

      格式:AutoIncrement : <option>

      • 自增字段可以修改的属性有CurrentValue, Increment, StartValue, MinValue, MaxValue, CacheSize, AcquireSize, Cycled, Generated。
        属性具体功能请参考 自增字段介绍

    Note:

    • 各个选项的具体使用方式见 db.collectionspace.createCL()
    • 分区集合不能修改与分区相关的属性,如 ShardingKey、Partition 等。
    • EnsureShardingIndex 和 AutoSplit 仅对当前该次操作生效,仅当修改分区属性,如 ShardingKey 等时有效

返回值

成功:无。

失败:抛出异常。

错误

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

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

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

版本

v1.12及以上版本。

示例

  1. 创建一个普通集合,然后将该集合修改为分区集合。

    db.sample.createCL('employee')
    
    > db.sample.employee.alter( { ShardingKey: { a: 1 }, ShardingType: "hash" } )
  2. 创建一个普通集合,然后将该集合修改为lzw压缩

    > db.sample.createCL('employee')
    > db.sample.employee.alter( { CompressionType:'lzw' } )
回到顶部