SequoiaDB 简介
安装部署
数据库实例
分布式引擎
SAC 管控中心
参考手册
常见问题及解答(FAQ)
版本信息
createIndex - 创建索引
db.collectionspace.collection.createIndex(<name>, <indexDef>, [isUnique], [enforced], [sortBufferSize])
db.collectionspace.collection.createIndex(<name>, <indexDef>, [options])
SdbCollection
该函数用于为集合创建索引,以提高查询速度。创建前用户需了解索引的相关限制。
如果索引字段在集合中为正序排序或需要匹配值较小的记录时,建议创建升序的索引,可以更快命中目标记录。如果需要匹配值较大的记录,建议创建降序的索引。在实际使用中,根据场景正确地指定索引类型,可以极大地提升索引的查询效率。
name( string,必填 )
索引名,同一个集合中的索引名必须唯一
indexDef( object,必填 )
索引键,格式为 {<索引字段>:<类型值>, ...}
,其中可选类型值如下:
isUnique( boolean,选填 )
是否为唯一索引,默认值为 false,表示不为唯一索引
enforced( boolean,选填 )
是否强制唯一,默认值为 false
sortBufferSize( number,选填 )
排序缓存的大小,默认值为 64,单位为 MB
Note:
对于全文索引,参数 isUnique、enforced 和 sortBufferSize 不生效。
options( object,选填 )
通过参数 options 可以设置索引属性:
Unique( boolean ):是否为唯一索引,默认值为 false,表示不为唯一索引
格式:Unique: true
Enforced( boolean ):是否强制唯一,默认值为 false
格式:Enforced: true
NotNull( boolean ):插入记录时是否允许索引字段不存在或取值为 null,默认值为 false
取值如下:
格式:NotNull: true
NotArray( boolean ):插入记录时是否允许索引字段的取值为数组,默认值为 false
取值如下:
格式:NotArray: true
SortBufferSize( number ):排序缓存的大小,默认值为 64,单位为 MB
格式:SortBufferSize: 80
函数执行成功时,无返回值。
函数执行失败时,将抛异常并输出错误信息。
当异常抛出时,可以通过 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