“文档” 菜单
文档首页
/
MongoDB Manual
/ / /

创建复合索引

在此页面上

  • 限制
  • 开始之前
  • 步骤
  • 结果
  • 了解详情

复合索引是包含对多个字段的引用的索引。复合索引可提高对索引中的字段或索引前缀中的字段进行查询的性能。对经常查询的字段建立索引可以增加覆盖这些查询的机会,这意味着 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 } } )
← 复合索引