文档菜单
文档首页
/
MongoDB 手册
/ / /

创建一个复合索引

本页内容

  • 限制
  • 开始之前
  • 步骤
  • 结果
  • 了解更多

复合索引 是包含多个字段引用的索引。复合索引可以提高对索引中确切字段或索引前缀中字段的查询性能。复合索引前缀。对常用查询字段进行索引可以增加这些查询被覆盖的机会,这意味着MongoDB可以使用索引完全满足查询,而不必检查文档。

要创建复合索引,请使用db.collection.createIndex() 方法

db.<collection>.createIndex( {
<field1>: <sortOrder>,
<field2>: <sortOrder>,
...
<fieldN>: <sortOrder>
} )

您可以在单个复合索引中指定最多32个字段。

创建一个包含这些文档的 students 集合

db.students.insertMany([
{
"name": "Alice",
"gpa": 3.6,
"location": { city: "Sacramento", state: "California" }
},
{
"name": "Bob",
"gpa": 3.2,
"location": { city: "Albany", state: "New York" }
}
])

以下操作创建了一个包含 namegpa 字段的复合索引

db.students.createIndex( {
name: 1,
gpa: -1
} )

在此示例中

  • name 上的索引是升序的 (1)。

  • gpa 上的索引是降序的 (-1)。

创建的索引支持基于以下查询

  • 同时选择 namegpa 字段的查询。

  • 仅支持 name 字段,因为 name 是复合索引的前缀。

例如,该索引支持以下查询

db.students.find( { name: "Alice", gpa: 3.6 } )
db.students.find( { name: "Bob" } )

该索引 不支持 仅基于 gpa 字段的查询,因为 gpa 不是索引前缀的一部分。例如,该索引不支持此查询

db.students.find( { gpa: { $gt: 3.5 } } )

返回

复合

© . This site is unofficial and not affiliated with MongoDB, Inc.