MongoDB\Collection::createIndex()
定义
参数
$key
: array|object指定要索引的字段和索引顺序。
例如,以下指定了在
username
字段上的降序索引[ 'username' => -1 ] $options
: array指定所需选项的数组。
$options
参数接受索引和命令选项。以下是一些索引选项的非详尽列表。有关索引选项的完整列表,请参阅createIndexes 命令参考,请参见 MongoDB 手册。索引选项(非详尽列表)
collationarray|objectCollation 允许用户指定针对字符串比较的语言特定规则,例如字母大小写和重音符号的规则。在指定排序规则时,
locale
字段是必须的;所有其他排序规则字段都是可选的。有关字段的描述,请参阅 Collation Document。如果未指定排序规则,但集合有默认排序规则,则操作将使用为集合指定的排序规则。如果集合或操作未指定排序规则,MongoDB 将使用先前版本中用于字符串比较的简单二进制比较。
expireAfterSecondsinteger创建一个 TTL 索引。namestring一个唯一标识索引的名称。默认情况下,MongoDB 根据键创建索引名称。partialFilterExpressionarray|object创建一个 partial 索引。sparseboolean创建一个 sparse 索引。uniqueboolean创建一个 unique 索引。命令选项
名称类型描述commentmixedcommitQuorumstring|integer指定复制集中必须成功完成索引构建的数据承载成员数量,包括主节点,然后主节点将索引标记为就绪。
此选项接受与写入关注中
w
字段相同的值,加上"votingMembers"
,表示所有投票数据承载节点。此选项不支持旧版本的服务器,如果使用,则会在执行时引发异常。
Newin version1.7.
maxTimeMSinteger处理游标上操作的总时间限制(以毫秒为单位)。MongoDB 在最早的以下 中断点 处终止操作。
Newin version1.3.
session与操作关联的客户端会话。
Newin version1.3.
writeConcern
返回值
创建的索引的名称作为字符串。
错误/异常
MongoDB\Exception\UnsupportedException
如果使用了所选服务器不支持(例如 collation
,readConcern
,writeConcern
)的选项。
MongoDB\Exception\InvalidArgumentException
用于与参数或选项解析相关的错误。
MongoDB\Driver\Exception\RuntimeException 用于扩展级别上的其他错误(例如连接错误)。
示例
创建复合索引
以下示例在 test
数据库中的 restaurants
集合的 borough
和 cuisine
字段上创建了一个 复合索引。
$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
字段的文档。
$collection = (new MongoDB\Client)->selectCollection('test', 'restaurants'); $indexName = $collection->createIndex( ['borough' => 1], [ 'partialFilterExpression' => [ 'borough' => ['$exists' => true], ], ] ); var_dump($indexName);
输出结果将类似于
string(9) "borough_1"
参见
createIndexes 命令参考,请参阅 MongoDB 手册
索引 文档,请参阅 MongoDB 手册