Docs 菜单
Docs 主页
/ / /
PHP 库手册
/ /

MongoDB\Collection::createIndex()

在此页面上

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

为collection创建索引。

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

指定要索引的一个或多个字段以及索引顺序。

例如,以下内容指定username字段的降序索引:

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

指定所需选项的数组。

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

指数选项(非详尽)

排序规则
数组|对象

排序规则允许用户为string比较指定特定于语言的规则,例如字母大小写和重音符号规则。 指定排序规则时, locale字段为必填字段;所有其他排序规则字段都是可选的。 有关字段的说明,请参阅排序规则文档。

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

expireAfterSeconds
整型
创建TTL索引。
名称
字符串
唯一标识索引的名称。 默认情况下,MongoDB 会根据键创建索引名称。
部分过滤器表达式
数组|对象
创建部分索引。
稀疏
布尔
创建稀疏索引。
独特的
布尔
创建唯一索引。

命令选项

名称
类型
说明
评论
混合

使用户可以指定任意注释来帮助通过数据库分析器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 针对扩展级别的其他错误(例如连接错误)。

以下示例在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"

以下示例为test数据库中restaurants集合的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()

来年

createIndexes()