db.collection.
createIndex
(键,选项)keys
-1
的 value。 MongoDB 支持几种不同的索引类型,包括文本,地理空间和哈希索引。有关更多信息,请参见索引类型。 从 3.6 开始,您不能将*
指定为索引 name。 MongoDB支持几种不同的索引类型,包括 text,geospatial和hashed索引。有关 更多信息,请参见索引类型。 在版本4.2中进行了更改: MongoDB 4.2 通配符索引 支持工作负载,用户可以在其中查询自定义字段或集合中各种字段: 要在文档中的所有字段和子字段上创建通配符索引,请指定为索引键。创建通配符索引时,不能指定降序索引键。{ "$**" : 1 }
,您还可以使用可选参数在索引中包括_或_排除特定字段及其子字段 wildcardProjection
。 _id
默认情况下,通配符索引会忽略该字段。要将_id
字段包含 在通配符索引中,必须在wildcardProjection
文档中明确包含它: { “ wildcardProjection”:{ “ _id”:1 “ <field>”:0 | 1 } } 除了显式包含 _id
字段外,您无法在wildcardProjection
文档中组合包含和排除语句 。 您可以在特定字段及其子路径上创建通配符索引,方法是将该字段的完整路径指定为索引键并附"$**"
加到该路径: { "path.to.field.$**" : 1 } 特定于路径的通配符索引语法与该wildcardProjection
选项不兼容 。您不能在指定的路径上指定其他包含或排除。 通配符索引键必须使用上面列出的语法之一。例如,您不能指定 复合索引键。有关通配符索引的更完整文档(包括对其创建的限制),请参阅通配符索引限制。 该featureCompatibilityVersion必须创建通配符索引。有关设置fCV的说明,请参阅 在MongoDB 4.2部署上设置功能兼容版本。mongod
4.2
options
options
文档包含一组控制索引创建的选项。不同的索引类型可以具有特定于该类型的附加选项。dropDups
选项不再可用。background
"4.0"
,指定可指示MongoDB在后台构建索引。后台构建 _不会_阻止对集合的操作。默认值为 。background: true/false
在版本4.2中进行了更改。 对于功能兼容版本(fcv)"4.2"
,所有索引构建都使用优化的 构建过程,该过程仅在构建过程的开始和结束时才持有排他锁。其余的构建过程将产生交错的读写操作。background
如果指定,MongoDB将忽略该选项。unique
true
以创建唯一索引。默认的 value 是false
。 该选项不适用于哈希索引。name
"4.2"
或更大的版本,MongoDB删除了 最大127个字节的限制。在早期版本或将featureCompatibilityVersion(fCV)设置为MongoDB的版本 中 ,索引名称必须位于内 。Index Name Length
"4.0"
limit
partialFilterExpression
field: value
或使用$eq operator), $exists:true表达式, $gt,$gte,$lt,$lte表达式, $type表达式, $and operator 仅 top-level 您可以指定所有 MongoDB 索引类型的partialFilterExpression
选项。 version 3.2 中的新内容。sparse
true
,则索引仅使用指定字段 references 文档。这些索引使用较少的空间,但在某些情况下(特别是排序)表现不同。默认的 value 是false
。有关更多信息,请参见稀疏索引。 在 version 3.2 中更改:从 MongoDB 3.2 开始,MongoDB 提供了创建部分索引的选项。部分索引提供了稀疏索引功能的超集。如果您使用 MongoDB 3.2 或更高版本,则部分索引应优先于稀疏索引。 version 2.6 中更改:2 dsphere索引默认为稀疏,并忽略此选项。对于包含2dsphere
index key(s)的复合索引以及其他类型的键,只有2dsphere
索引字段确定索引是否引用文档。 2 d,geoHaystack和文本索引的行为与2 dsphere索引类似。expireAfterSeconds
storageEngine
storageEngine
选项应采用以下形式: storageEngine: { <storage-engine-name>: <options> }
在验证 creating 索引时指定的存储引擎 configuration 选项,并在复制期间记录到OPLOG以支持具有使用不同存储引擎的成员的副本_set。 version 3.0 中的新内容。警告MongoDB 3.2 和早期版本不支持排序规则。在 MongoDB 3.2 及更早版本中,不要使用不受支持的排序规则选项创建索引,因为这会阻止升级到 3.4,这将强制执行更严格的索引选项验证。
collation
locale
字段是必填字段;所有其他校对字段都是可选的。有关字段的说明,请参阅整理文件。 version 3.4 中的新内容。建议要在具有 non-simple 归类的集合上创建text
,2d
或geoHaystack
索引,必须在创建索引时显式指定{collation: {locale: "simple"} }
。
建议通过指定1
或2
的归类strength
,可以创建不区分大小写的索引。排序规则strength
的索引是1
的不区分字母也不区分大小写。
myColl
在 string 字段category
上有一个索引,其中包含整理 locale "fr"
。myColl
在数字字段score
和price
以及 string 字段category
上具有复合索引;使用用于 string 比较的排序规则 locale "fr"
创建索引:"simple"
二进制排序规则进行 string 比较)可以使用索引:category
字段上使用"simple"
二进制排序规则进行 string 比较,可以使用索引仅满足查询的score: 5
部分:weights
1
。default_language
english
。language_override
language
。有关 example,请参阅使用任何字段指定文档的语言。textIndexVersion
text
索引 version number。用户可以使用此选项覆盖默认的 version number。 有关可用版本,请参阅版本。 version 2.6 中的新内容。2dsphereIndexVersion
2dsphere
索引 version number。用户可以使用此选项覆盖默认的 version number。 有关可用版本,请参阅版本。 version 2.6 中的新内容。bits
bits
value 的范围是 1 到 32(含)。默认的 value 是26
。min
-180.0
。max
180.0
。bucketSize
wildcardProjection
{ "$**" : 1}
{ "path.to.field.$**" : 1 }
该wildcardProjection
选项采用以下形式: wildcardProjection: { "path.to.field.a" : <value>, "path.to.field.b" : <value> } 该<value>
可以是以下几点: 1. 1
或true
将该字段包括在通配符索引中。 2. 0
或false
从通配符索引中排除该字段。 _id
默认情况下,通配符索引会忽略该字段。要将_id
字段包含 在通配符索引中,必须在wildcardProjection
文档中明确包含它: { "wildcardProjection" : { "_id" : 1, "<field>" : 0 1 } } 除了显式包含 _id
字段外,您无法在wildcardProjection
文档中组合包含和排除语句 。"4.2"
,db.collection.createIndex()
使用优化的构建过程,该过程在索引构建的开始和结束时获取并持有对指定集合的排他锁。集合上的所有后续操作必须等到db.collection.createIndex()
释放排他锁。db.collection.createIndex()
允许在大多数索引构建期间交错进行读写操作。"4.0"
,db.collection.createIndex()
使用4.2之前的索引构建过程,默认情况下会在构建过程的整个过程中获取父数据库的互斥锁。4.2之前的构建过程将阻止对数据库_及其_所有集合的所有操作,直到操作完成。background
索引不使用排他锁。db.collection.createIndex()
,请参见 填充集合的索引构建。db.collection.createIndex()
已经存在的索引,则MongoDB不会重新创建该索引。db.collection.dropIndex()
在db.collection.createIndex()
使用新选项运行之前 删除现有索引 。"4.0"
或更早版本的MongoDB 2.6至MongoDB版本, 如果现有文档的索引条目超过,则MongoDB 不会在集合上创建索引。Maximum Index Key Length
orderDate
上创建升序索引。keys
文档指定了多个字段,则createIndex()创建复合指数。orderDate
字段(在升序 order 中)和zipcode
字段(在降序 order.)中)创建复合索引注意索引的 order 对于使用索引支持sort()操作很重要。
category_fr
的索引。 example 使用整理创建索引,指定 locale fr
和比较强度2
:date_category_fr
的复合索引。排序规则仅适用于具有 string 值的索引键。mongod
featureCompatibilityVersion必须4.2
创建通配符索引。有关设置fCV的说明,请参阅 在MongoDB 4.2部署上设置功能兼容版本。_id
默认情况下,通配符索引会忽略该字段。要将_id
字段包含 在通配符索引中,必须在wildcardProjection
文档中明确包含它:_id
字段外,您无法在wildcardProjection
文档中组合包含和排除语句 。注意通配符索引与通配符文本索引不同并且不兼容 。通配符索引不能支持使用$text
运算符的查询。
products_catalog
,其中文档可能包含一个 product_attributes
字段。该product_attributes
字段可以包含任意嵌套的字段,包括嵌入式文档和数组:product_attributes
字段上创建通配符索引 :product_attributes
。如果字段是嵌套的文档或数组,则通配符索引将递归到文档/数组中,并为文档/数组中的所有标量字段建立索引。product_attributes
对其嵌套字段之一或其嵌套字段进行任意单字段查询 :注意特定于路径的通配符索引语法与该wildcardProjection选项不兼容 。有关更多信息,请参见参数文档。
products_catalog
,其中文档可能包含一个 product_attributes
字段。该product_attributes
字段可以包含任意嵌套的字段,包括嵌入式文档和数组:_id
字段)上创建通配符索引:注意_id默认情况下,通配符索引会忽略该字段。要将_id字段包括 在通配符索引中,必须在wildcardProjection文档中明确包含它。有关更多信息,请参见参数文档。
products_catalog
,其中文档可能包含一个 product_attributes
字段。该product_attributes
字段可以包含任意嵌套的字段,包括嵌入式文档和数组:wildcardProjection
选项在索引中仅包含product_attributes.elements
和product_attributes.resistance
字段的标量值 。"$**"
涵盖了文档中的所有字段,但该 wildcardProjection
字段将索引限制为仅包含的字段。有关的完整文档wildcardProjection
,请参阅 通配符索引的选项。wildcardProjection
:注意通配符索引不支持在wildcardProjection文档中混合包含和排除语句,除非明确包含该_id字段。有关更多信息 wildcardProjection,请参见参数文档。
products_catalog
,其中文档可能包含一个 product_attributes
字段。该product_attributes
字段可以包含任意嵌套的字段,包括嵌入式文档和数组:wildcardProjection
文件索引的所有标量场的每个文档的集合中,_排除_了 product_attributes.elements
和product_attributes.resistance
字段:"$**"
涵盖了文档中的所有字段,但 wildcardProjection
该字段从索引中排除了指定的字段。有关的完整文档wildcardProjection
,请参阅 通配符索引的选项。wildcardProjection
:注意通配符索引不支持在wildcardProjection文档中混合包含和排除语句,除非明确包含该_id字段。有关更多信息 wildcardProjection,请参见参数文档。
text
索引的详细信息。