参考 > 参考 > mongo Shell方法 > 收集方法 > db.collection.createIndex()
db.collection.
createIndex
(键,选项)¶mongo
壳法
此页面记录了mongo
shell方法,并且
没有引用MongoDB Node.js驱动程序(或任何其他驱动程序)方法。对于相应的MongoDB驱动程序API,请改为参考您特定的
MongoDB驱动程序文档。
在集合上创建索引。
参数 | 类型 | 描述 |
---|---|---|
keys |
文献 | 包含字段和值对的文档,其中字段是索引键,而值描述该字段的索引类型。对于字段上的升序索引,将值指定为 MongoDB支持几种不同的索引类型,包括 text,geospatial和hashed索引。有关 更多信息,请参见索引类型。 在版本4.2中进行了更改: MongoDB 4.2 通配符索引 支持工作负载,用户可以在其中查询自定义字段或集合中多种字段:
通配符索引键必须使用上面列出的语法之一。例如,您不能指定 复合索引键。有关通配符索引的更完整文档(包括对其创建的限制),请参见通配符索引限制。 该featureCompatibilityVersion必须创建通配符索引。有关设置fCV的说明,请参阅
在MongoDB 4.2部署上设置功能兼容版本。 有关创建通配符索引的示例,请参见 创建通配符索引。 |
options |
文献 | 可选的。包含一组控制索引创建的选项的文档。有关详细信息,请参见选项。 |
该db.collection.createIndex()
是围绕着一个包装
createIndexes
命令。
该options
文档包含一组控制索引创建的选项。不同的索引类型可以具有特定于该类型的其他选项。
在版本3.4中进行了更改:添加了对归类选项的支持。
除非另有说明,否则以下选项可用于所有索引类型:
参数 | 类型 | 描述 |
---|---|---|
background |
布尔值 | 可选的。在MongoDB 4.2中已弃用。
|
unique |
布尔值 | 可选的。创建唯一索引,以便在索引键值与索引中现有值匹配的集合中,该集合将不接受文档的插入或更新。 指定 该选项不适用于哈希 索引。 |
name |
串 | 可选的。索引名称。如果未指定,则MongoDB通过串联索引字段的名称和排序顺序来生成索引名称。 在MongoDB 4.2中已更改 从4.2版开始,对于featureCompatibilityVersion设置为 |
partialFilterExpression |
文献 | 可选的。如果指定,则索引仅引用与过滤器表达式匹配的文档。有关更多信息,请参见部分索引。 过滤器表达式可以包括: 您可以 3.2版中的新功能。 |
sparse |
布尔值 | 可选的。如果为 默认情况下,以下索引类型是稀疏的,并且忽略此选项: 对于包含 |
expireAfterSeconds |
整数 | 可选的。指定一个值(以秒为单位)作为TTL,以控制MongoDB在此集合中保留文档的时间。有关此功能的更多信息,请参见 通过设置TTL从集合中过期数据。这仅适用于TTL索引。 |
storageEngine |
文献 | 可选的。允许用户在创建索引时基于每个索引配置存储引擎。 该 创建索引时进行验证,并记录到指定的存储引擎的配置选项OPLOG复制到支持副本集与使用不同的存储引擎成员中。 |
3.4版的新功能。
参数 | 类型 | 描述 |
---|---|---|
collation |
文献 | 可选的。指定索引的排序规则。 归类允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。 如果您在集合级别指定了排序规则,则:
排序规则选项具有以下语法: 指定排序规则时,该 3.4版的新功能。 |
以下索引仅支持简单的二进制比较,不支持排序规则:
小费
要创建一个text
,一个2d
,或者geoHaystack
对具有非简单归类的集合索引,你必须明确指定创建索引时。{collation: {locale: "simple"} }
如果您在集合级别指定了排序规则,则:
小费
通过指定整理strength
的1
或者2
,你可以创建一个不区分大小写的索引。排序规则strength
为的索引1
不区分大小写,也不区分大小写。
与其他索引选项不同,您可以在具有不同排序规则的同一键上创建多个索引。要创建具有相同键模式但排序规则不同的索引,必须提供唯一的索引名称。
要将索引用于字符串比较,操作还必须指定相同的排序规则。即,具有排序规则的索引不能支持对索引字段进行字符串比较的操作(如果该操作指定了不同的排序规则)。
例如,该集合myColl
在category
具有排序规则语言环境的字符串字段上具有索引"fr"
。
以下查询操作指定与索引相同的排序规则,可以使用索引:
但是,默认情况下使用“简单”二进制整理程序的以下查询操作不能使用索引:
对于索引前缀键不是字符串,数组和嵌入式文档的复合索引,指定其他排序规则的操作仍可以使用索引来支持索引前缀键的比较。
例如,集合myColl
在数字字段score
和price
字符串字段
上具有复合索引category
;使用排序规则语言环境创建索引以
"fr"
进行字符串比较:
使用"simple"
二进制排序规则进行字符串比较的以下操作可以使用索引:
下面的操作使用"simple"
二进制排序规则对索引category
字段进行字符串比较,该操作可以使用索引仅满足查询的一部分:score: 5
text
索引¶以下选项仅适用于文本 索引:
参数 | 类型 | 描述 |
---|---|---|
weights |
文献 | 可选的。对于文本索引,是包含字段和权重对的文档。权重是一个介于1到99,999之间的整数,表示得分相对于其他索引字段的字段的重要性。您可以为某些或所有索引字段指定权重。请参阅
使用权重控制搜索结果以调整分数。默认值为1 。 |
default_language |
串 | 可选的。对于文本索引,该语言用于确定停用词列表以及词干分析器和令牌生成器的规则。有关更多信息和示例,请参见文本搜索语言以获取可用语言和为文本索引指定语言。默认值为english 。 |
language_override |
串 | 可选的。对于文本索引,是集合文档中包含文档替代语言的字段名称。默认值为language 。有关示例,请参见
使用任何字段指定文档的语言。 |
textIndexVersion |
整数 | 可选的。该 有关可用版本,请参见“ 版本”。 |
2dsphere
索引¶以下选项仅适用于2dsphere 索引:
参数 | 类型 | 描述 |
---|---|---|
2dsphereIndexVersion |
整数 | 可选的。该 有关可用版本,请参见版本。 |
2d
索引¶以下选项仅适用于二维索引:
参数 | 类型 | 描述 |
---|---|---|
bits |
整数 | 可选的。对于2d索引,位置数据的存储geohash值的精度数。 的 |
min |
数 | 可选的。对于2d索引,经度和纬度值的下界边界。默认值为-180.0 。 |
max |
数 | 可选的。对于2d索引,是经度和纬度值的包含上边界。默认值为180.0 。 |
geoHaystack
索引¶以下选项仅适用于geoHaystack 索引:
参数 | 类型 | 描述 |
---|---|---|
bucketSize |
数 | 对于geoHaystack索引,请指定用于对位置值进行分组的单位数;也就是说,在同一存储桶中将彼此在指定数量单位内的位置值分组。 该值必须大于0。 |
wildcard
索引¶以下选项仅适用于 通配符索引:
参数 | 类型 | 描述 |
---|---|---|
wildcardProjection |
文献 | 可选的。允许用户使用
键模式在通配符索引中包括或排除特定的字段路径。仅当在所有文档字段上创建通配符索引时,此选项才有效。如果在特定字段路径及其子字段上创建通配符索引,则无法指定此选项,例如
该 该
除了显式包含 |
在版本4.2中进行了更改。
对于featureCompatibilityVersion "4.2"
,db.collection.createIndex()
使用优化的构建过程,该过程在索引构建的开始和结束时获取并持有对指定集合的排他锁。集合上的所有后续操作必须等到db.collection.createIndex()
释放排他锁。db.collection.createIndex()
允许在大多数索引构建期间交错进行读写操作。
对于featureCompatibilityVersion "4.0"
,db.collection.createIndex()
使用4.2之前的索引构建过程,默认情况下,该过程在构建过程的整个过程中获取父数据库的互斥锁。4.2之前的构建过程将阻止对数据库及其所有集合的所有操作,直到操作完成。background
索引不使用排他锁。
有关的锁定行为的更多信息db.collection.createIndex()
,请参见
填充集合上的索引构建。
如果您要求db.collection.createIndex()
已经存在的索引,则MongoDB不会重新创建该索引。
除排序规则选项外,如果您创建具有一组索引选项的索引,然后尝试重新创建相同的索引但具有不同的索引选项,则MongoDB不会更改选项,也不会重新创建索引。
要更改这些索引选项,请db.collection.dropIndex()
在db.collection.createIndex()
使用新选项之前
删除现有索引
。
与其他索引选项不同,您可以在具有不同排序规则的同一键上创建多个索引。要创建具有相同键模式但排序规则不同的索引,必须提供唯一的索引名称。
对于将featureCompatibilityVersion(fCV)设置为"4.0"
或更早版本的MongoDB 2.6至MongoDB版本,
如果现有文档的索引条目超过,则MongoDB 不会在集合上创建索引。Maximum Index Key Length
以下示例在orderDate
字段(按升序)和zipcode
字段(按降序)上创建复合索引
。
复合索引不能包含哈希索引 组件。
注意
索引的顺序对于支持sort()
使用索引的操作很重要
。
3.4版的新功能。
以下示例创建一个名为的索引category_fr
。该示例使用排序规则创建索引,该排序规则指定区域设置fr
和比较强度2
:
下面的示例创建一个名为化合物指数
date_category_fr
与核对。排序规则仅适用于具有字符串值的索引键。
排序规则适用于值为字符串的索引键。
对于使用相同归类规则的索引键的查询或排序操作,MongoDB可以使用索引。有关详细信息,请参见排序规则和索引使用。
4.2版中的新功能。
该featureCompatibilityVersion必须创建通配符索引。有关设置fCV的说明,请参阅
在MongoDB 4.2部署上设置功能兼容版本。mongod
4.2