SequoiaDB 简介
快速入门
安装部署
数据库实例
分布式引擎
SAC 管控中心
SequoiaPerf 性能分析工具
参考手册
常见问题及解答(FAQ)
版本信息
createIndex - 创建索引
db.collectionspace.collection.createIndex(<name>, <indexDef>, [isUnique], [enforced], [sortBufferSize])
db.collectionspace.collection.createIndex(<name>, <indexDef>, [indexAttr], [option])
SdbCollection
该函数用于为集合创建索引,以提高查询速度。创建前用户需了解索引的相关限制。
name( string,必填 )
索引名,同一个集合中的索引名必须唯一
indexDef( object,必填 )
索引键,格式为 {<索引字段>:<类型值>, ...}
,其中可选类型值如下:
isUnique( boolean,选填 )
是否为唯一索引,默认值为 false,表示不为唯一索引
enforced( boolean,选填 )
是否强制唯一,默认值为 false
sortBufferSize( number,选填 )
排序缓存的大小,默认值为 64,单位为 MB
Note:
对于全文索引,参数 isUnique、enforced 和 sortBufferSize 不生效。
indexAttr( object,选填 )
通过参数 indexAttr 可以设置索引属性:
Unique( boolean ):是否为唯一索引,默认值为 false,表示不为唯一索引
格式:Unique: true
Enforced( boolean ):是否强制唯一,默认值为 false
格式:Enforced: true
NotNull( boolean ):插入记录时是否允许索引字段不存在或取值为 null,默认值为 false
取值如下:
格式:NotNull: true
NotArray( boolean ):插入记录时是否允许索引字段的取值为数组,默认值为 false
取值如下:
格式:NotArray: true
Standalone( boolean ):是否为独立索引,默认值为 false,表示不为独立索引
该参数指定为 true 时,必须指定参数 NodeName、NodeID 或 InstanceID。
格式:Standalone: true
option( object,选填 )
通过参数 option 可以设置控制参数:
SortBufferSize( number ):排序缓存的大小,默认值为 64,单位为 MB
格式:SortBufferSize: 80
NodeName( string/array ):数据节点名
格式:NodeName: "sdbserver:11820"
NodeID( number/array ):数据节点 ID
格式:NodeID: 1001
InstanceID( number/array ):数据节点的实例 ID
格式:InstanceID: 100
函数执行成功时,无返回值。
函数执行失败时,将抛异常并输出错误信息。
当异常抛出时,可以通过 getLastErrMsg() 获取错误信息或通过 getLastError() 获取错误码。更多错误处理可以参考常见错误处理指南。
v2.0 及以上版本
创建名为“ageIndex”的唯一索引,并指定记录按索引字段 age 的值升序排序
> db.sample.employee.createIndex("ageIndex", {age: 1}, true)
创建名为“addr_tags”的全文索引
> db.sample.employee.createIndex("addr_tags", {address: "text", tags: "text"})
创建名为“ab”的唯一索引,并指定参数 NotNull 为 true
> db.sample.employee.createIndex("ab", {a: 1, b: 1}, {Unique: true, NotNull: true})
当字段 b 不存在或取值为 null 时,将返回报错信息
> db.sample.employee.insert({a: 1}) sdb.js:625 uncaught exception: -339 Any field of index key should exist and cannot be null > db.sample.employee.insert({a: 1, b: null}) sdb.js:625 uncaught exception: -339 Any field of index key should exist and cannot be null
创建名为“ab”的索引,并指定参数 NotArray 为 true
> db.sample.employee.createIndex("ab", {a: 1, b: 1}, {NotArray: true})
当字段 a 为数组时,将返回报错信息
> db.sample.employee.insert({a: [1], b: 10}) sdb.js:645 uncaught exception: -364 Any field of index key cannot be array
在数据节点 sdbserver:11850
上创建名为“a”的独立索引
> db.sample.employee.createIndex("a", {a: 1}, {Standalone: true}, {NodeName: "sdbserver:11850"})