文档菜单
文档首页
/ / /
PHP 库手册
/ /

MongoDB\Collection::createIndexes()

本页内容

  • 定义
  • 参数
  • 返回值
  • 错误/异常
  • 行为
  • 示例
  • 另请参阅
MongoDB\Collection::createIndexes()

为集合创建一个或多个索引。

function createIndexes(
array $indexes,
array $options = []
): string[]
$indexes : array

要创建的集合索引。

例如,以下指定了对username字段的唯一索引和对emailcreatedAt字段的组合索引。

[
[ 'key' => [ 'username' => -1 ], 'unique' => true ],
[ 'key' => [ 'email' => 1, 'createdAt' => 1 ] ],
]
$options : array

指定所需选项的数组。

名称
类型
描述
comment
mixed

允许用户指定任意注释,以帮助通过数据库分析器、当前操作输出和日志跟踪操作。数据库分析器当前操作输出和日志。

此选项自MongoDB 4.4版起可用,如果指定用于较旧的服务器版本,将在执行时引发异常。

新功能自版本1.13.

commitQuorum
string|integer

指定主节点在标记索引为就绪之前,必须成功完成包括主节点在内的多少个副本集数据承载成员的索引构建。

此选项接受写关注中w字段以及"votingMembers"相同的值,后者表示所有投票数据承载节点。

此功能不支持4.4版本之前的服务器,如果使用将导致执行时抛出异常。

新功能自版本1.7.

maxTimeMS
整数

处理游标上操作的总时间限制(毫秒)。MongoDB将在下一个中断点后终止操作。

新功能自版本1.3.

session

与操作关联的客户端会话。

新功能自版本1.3.

writeConcern

写关注用于操作。默认为集合的写关注。

无法在事务中将写关注指定为单个操作的组成部分。相反,在开始事务时设置writeConcern选项。

创建的索引名称,作为字符串数组。

如果使用不支持的选项(例如 collationreadConcernwriteConcern),将抛出 MongoDB\Exception\UnsupportedException

与参数或选项解析相关的错误将抛出 MongoDB\Exception\InvalidArgumentException

其他扩展级别的错误(例如连接错误)将抛出 MongoDB\Driver\Exception\RuntimeException

$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 集合上创建两个索引。一个是在 boroughcuisine 字段上的复合索引,另一个是在 loc 字段上的自定义名称的 2dsphere 索引。

<?php
$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"
}

返回

createIndex()