MongoDB\Collection::createIndex()
定义
参数
$key
: array|object指定要索引的一个或多个字段以及索引顺序。
例如,以下内容指定
username
字段的降序索引:[ 'username' => -1 ] $options
: array指定所需选项的数组。
$options
参数接受索引和命令选项。 索引选项的非详尽列表如下。 有关索引选项的完整列表,请参阅MongoDB手册中的 createIndexes命令参考。指数选项(非详尽)
排序规则数组|对象expireAfterSeconds
整型
创建TTL索引。
名称
字符串
唯一标识索引的名称。 默认情况下,MongoDB 会根据键创建索引名称。
部分过滤器表达式
数组|对象
创建部分索引。
稀疏
布尔
创建稀疏索引。
unique
布尔
创建唯一索引。
命令选项
名称类型说明comment
混合
commitQuorum
字符串|整数
指定在主节点将索引标记为就绪之前,副本集的多少个承载数据的节点(包括主节点)必须成功完成索引构建。
此选项接受写关注(write
w
concern)中相同的字段值加上"votingMembers"
,这表示所有投票数据承载节点。4.4 之前的服务器版本不支持此功能,如果使用,将导致执行时出现异常。
版本 1.7 中的新增内容。
maxTimeMS
整型
处理游标操作的累计时间限制(以毫秒为单位)。MongoDB 最早会在中断点之后中止操作。
1.3 版本中的新增功能。
会话
与操作相关联的客户端会话。
1.3 版本中的新增功能。
writeConcern
Return Values
以字符串形式表示的所创建索引的名称。
错误/异常
MongoDB\Exception\UnsupportedException
,如果所选服务器使用了选项但不支持选项(例如collation
、readConcern
、writeConcern
)。
MongoDB\Exception\InvalidArgumentException
用于与参数或选项解析相关的错误。
MongoDB\ 驱动程序\Exception\RuntimeException 对于扩展级别的其他错误(例如连接错误)。
示例
创建复合索引
以下示例在test
数据库的restaurants
集合中的borough
和cuisine
字段上创建复合索引。
$collection = (new MongoDB\Client)->selectCollection('test', 'restaurants'); $indexName = $collection->createIndex(['borough' => 1, 'cuisine' => 1]); var_dump($indexName);
而输出将类似如下所示:
string(19) "borough_1_cuisine_1"
创建部分索引
以下示例为test
数据库中restaurants
集合的borough
字段添加了部分索引。 部分索引仅对存在borough
字段的文档进行索引。
$collection = (new MongoDB\Client)->selectCollection('test', 'restaurants'); $indexName = $collection->createIndex( ['borough' => 1], [ 'partialFilterExpression' => [ 'borough' => ['$exists' => true], ], ] ); var_dump($indexName);
而输出将类似如下所示:
string(9) "borough_1"
另请参阅
MongoDB 手册中的createIndexes命令参考
MongoDB 手册中的索引文档