创建复合索引

复合索引是包含对多个字段的引用的索引。复合索引提高了对索引中的字段或索引前缀中的字段进行查询的性能。

要创建复合索引,请使用以下 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" }
   }
])

步骤

name 以下操作创建包含和字段的复合索引gpa

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 } } )

了解更多

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""