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

MongoDB\Collection::createIndex()

本页内容

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

为集合创建索引。

function createIndex(
array|object $key,
array $options = []
): string
$key : array|object

指定要索引的字段和索引顺序。

例如,以下指定了在 username 字段上的降序索引

[ 'username' => -1 ]
$options : array

指定所需选项的数组。

$options 参数接受索引和命令选项。以下是一些索引选项的非详尽列表。有关索引选项的完整列表,请参阅createIndexes 命令参考,请参见 MongoDB 手册。

索引选项(非详尽列表)

collation
array|object

Collation 允许用户指定针对字符串比较的语言特定规则,例如字母大小写和重音符号的规则。在指定排序规则时,locale 字段是必须的;所有其他排序规则字段都是可选的。有关字段的描述,请参阅 Collation Document

如果未指定排序规则,但集合有默认排序规则,则操作将使用为集合指定的排序规则。如果集合或操作未指定排序规则,MongoDB 将使用先前版本中用于字符串比较的简单二进制比较。

expireAfterSeconds
integer
创建一个 TTL 索引。
name
string
一个唯一标识索引的名称。默认情况下,MongoDB 根据键创建索引名称。
partialFilterExpression
array|object
创建一个 partial 索引。
sparse
boolean
创建一个 sparse 索引。
unique
boolean
创建一个 unique 索引。

命令选项

名称
类型
描述
comment
mixed

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

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

Newin version1.13.

commitQuorum
string|integer

指定复制集中必须成功完成索引构建的数据承载成员数量,包括主节点,然后主节点将索引标记为就绪。

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

此选项不支持旧版本的服务器,如果使用,则会在执行时引发异常。

Newin version1.7.

maxTimeMS
integer

处理游标上操作的总时间限制(以毫秒为单位)。MongoDB 在最早的以下 中断点 处终止操作。

Newin version1.3.

session

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

Newin version1.3.

writeConcern

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

在事务中不能为单个操作指定写入关注度。相反,在开始事务时设置writeConcern选项。

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

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

MongoDB\Exception\InvalidArgumentException 用于与参数或选项解析相关的错误。

MongoDB\Driver\Exception\RuntimeException 用于扩展级别上的其他错误(例如连接错误)。

以下示例在 test 数据库中的 restaurants 集合的 boroughcuisine 字段上创建了一个 复合索引

<?php
$collection = (new MongoDB\Client)->selectCollection('test', 'restaurants');
$indexName = $collection->createIndex(['borough' => 1, 'cuisine' => 1]);
var_dump($indexName);

输出结果将类似于

string(19) "borough_1_cuisine_1"

以下示例在 restaurants 集合中 test 数据库的 borough 字段上添加了一个部分索引。该部分索引仅索引存在 borough 字段的文档。

<?php
$collection = (new MongoDB\Client)->selectCollection('test', 'restaurants');
$indexName = $collection->createIndex(
['borough' => 1],
[
'partialFilterExpression' => [
'borough' => ['$exists' => true],
],
]
);
var_dump($indexName);

输出结果将类似于

string(9) "borough_1"

返回

countDocuments()