Docs 菜单

Docs 主页PHP 库手册

MongoDB\Collection::createIndexes()

在此页面上

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

为collection创建一个或多个索引。

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

要在集合上创建的索引。

例如,以下内容指定了对username字段的唯一索引以及对emailcreatedAt字段的复合索引:

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

指定所需选项的数组。

名称
类型
说明
注释
混合

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

自 MongoDB 4.4 起此选项可用,如果为旧服务器版本指定,则会在执行时导致异常。

1.13 版本中的新增功能

commitQuorum
字符串|整数

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

此选项接受写关注(writew concern)中相同的字段值加上"votingMembers" ,这表示所有投票数据承载节点。

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

版本 1.7 中的新增内容

maxTimeMS
整型

对游标进行处理操作的累积时间限制(以毫秒为单位)。 MongoDB 最早会在中断点之后中止操作。

1.3 版本中的新增功能

会议

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

1.3 版本中的新增功能

writeConcern

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

无法将单个操作的写关注指定为事务的一部分。相反,请在writeConcern 启动事务 时设置 选项。

以字符串数组形式表示的所创建索引的名称。

MongoDB\Exception\UnsupportedException,如果所选服务器使用了选项但不支持选项(例如collationreadConcernwriteConcern)。

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数据库中的restaurantscollection上创建了两个索引。一个索引是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"
}
← MongoDB\Collection::createIndex()