在单个字段上创建索引

您可以在单个字段上创建索引以提高对该字段的查询性能。

要创建单字段索引,请使用以下 db.collection.createIndex()方法:

db.<collection>.createIndex( { <field>: <sortOrder> } )

笔记:

索引排序顺序

对于单字段索引,索引键的排序顺序(升序或降序)并不重要,因为 MongoDB 可以沿任一方向遍历索引。

在你开始之前

创建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" }
   }
] )

步骤

以下示例向您展示如何:

在单个字段上创建索引

假设有一位经常通过GPA来查找学生的学校管理人员。您可以在字段上创建索引 gpa以提高这些查询的性能:

db.students.createIndex( { gpa: 1 } )

结果

该索引支持对字段进行选择的查询gpa,如下所示:

db.students.find( { gpa: 3.6 } )

db.students.find( { gpa: { $lt: 3.4 } } )

在嵌入文档上创建索引

您可以对整个嵌入文档创建索引。

考虑一个社交网络应用程序,学生可以在其中按位置搜索彼此。学生位置存储在名为 的嵌入式文档中location。该location文档包含字段citystate

您可以在字段上创建索引location以提高文档查询的性能location

db.students.createIndex( { location: 1 } )

结果

以下查询使用字段上的索引location

db.students.find( { location: { city: "Sacramento", state: "California" } } )

重要的:

嵌套文档的字段顺序

当您基于嵌入文档进行查询时,指定字段的顺序很重要。查询中嵌入的文档和返回的文档必须完全匹配。要查看嵌入文档查询的更多示例,请参阅嵌入/嵌套文档查询。

细节

当您在嵌入文档上创建索引时,只有指定整个嵌入文档的查询才会使用该索引。对文档中特定字段的查询不使用索引。

例如,以下查询使用字段上的索引 location,因为它们查询嵌入文档中的特定字段:

db.students.find( { "location.city": "Sacramento" } )

db.students.find( { "location.state": "New York" } )

为了让点表示法查询使用索引,您必须在正在查询的特定嵌入字段(而不是整个嵌入对象)上创建索引。有关示例,请参见 在嵌入字段上创建索引。

在嵌入字段上创建索引

您可以在嵌入文档中的字段上创建索引。嵌入字段上的索引可以满足使用点表示法的查询。

location字段是一个嵌入文档,包含嵌入字段citystate。在字段上创建索引 location.state

db.students.createIndex( { "location.state": 1 } )

结果

索引支持对字段进行查询location.state,例如:

db.students.find( { "location.state": "California" } )

db.students.find( { "location.city": "Albany", "location.state": "New York" } )

了解更多

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

results matching ""

    No results matching ""