MongoDB\Collection::createIndexes()
定义
参数
$indexes
: array要在集合上创建的索引。
例如,以下内容指定了对
username
字段的唯一索引以及对email
和createdAt
字段的复合索引:[ [ 'key' => [ 'username' => -1 ], 'unique' => true ], [ 'key' => [ 'email' => 1, 'createdAt' => 1 ] ], ] $options
: array指定所需选项的数组。
名称类型说明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 对于扩展级别的其他错误(例如连接错误)。
行为
$indexes
parameter
$indexes
参数是索引规范文档的数组。 $indexes
中的每个元素本身必须是具有key
字段的数组或对象,该字段对应于createIndex()
的$key
参数。 数组或对象可能包含与createIndex()
接受的索引选项相对应的其他字段。 有关支持的索引创建选项的完整列表,请参阅 MongoDB 手册中的createIndexes命令参考。
例如,以下$indexes
参数会创建两个索引。 第一个是username
字段上的升序唯一索引,第二个是loc
字段上具有自定义名称的 2dsphere 索引:
[ [ 'key' => [ 'username' => 1 ], 'unique' => true ], [ 'key' => [ 'loc' => '2dsphere' ], 'name' => 'geo_index' ], ]
例子
以下示例在test
数据库中的restaurants
collection上创建了两个索引。一个索引是borough
和cuisine
字段上的复合索引,另一个是loc
字段上具有自定义名称的 2dsphere 索引。
$collection = (new MongoDB\Client)->selectCollection('test', 'restaurants'); $indexNames = $collection->createIndexes([ [ 'key' => [ 'borough' => 1, 'cuisine' => 1] ], [ 'key' => [ 'loc' => '2dsphere'], 'name' => 'geo_index' ], ]); var_dump($indexNames);
而输出将类似如下所示:
array(2) { [0]=> string(19) "borough_1_cuisine_1" [1]=> string(9) "geo_index" }
另请参阅
MongoDB 手册中的createIndexes命令参考
MongoDB 手册中的索引文档