在MongoDB中创建索引的3种方法

发布于

在MongoDB中,您可以使用方法,方法或管理命令在集合上创建索引。createIndex()``createIndexes()``createIndexes

方法createIndex()

该方法在指定的集合上创建索引。它是管理命令的包装器。db.collection.createIndex()``createIndexes

例:

db.pets.createIndex( { weight: -1 } )

这将在宠物集合上创建一个索引。它是字段上的降序索引。我们知道它是下降的,因为我们指定了.如果我们指定它应该是升序的。weight``-1``1

复合索引是在多个字段上定义的索引。您可以通过用逗号分隔每个字段来创建复合索引。

例:

db.pets.createIndex( { name: 1, type: -1 } )

这将在字段(升序)和字段(降序)上创建复合索引。name``type

方法createIndexes()

该方法在集合上创建一个或多个索引 此方法也是管理命令的包装器。db.collection.createIndexes()``createIndexes

使用该方法创建索引时,需要在数组中提供字段。即使只创建单个索引,也需要执行此操作。createIndexes()

例:

db.pets.createIndexes( [ { weight: -1 } ] )

这与第一个示例执行的操作相同。它在字段上创建一个降序索引。weight

要创建多个索引,请用逗号分隔每个索引的文档。

例:

db.pets.createIndexes( [ { name: 1 }, { weight: -1 } ] )

还可以使用 创建复合索引。为此,只需在文档中为该索引定义复合索引。createIndexes()

因此,我们可以执行以下操作:

db.pets.createIndexes( [ { name: 1, type: -1 }, { weight: -1 } ] )

这将为 和 字段创建一个复合索引,并为该字段创建一个单独的索引。name``type``weight

命令createIndexes

管理命令在集合上创建一个或多个索引 前两个方法是此命令的包装器。createIndexes

因此,我们可以使用该命令来创建我们在前面示例中执行的索引。createIndexes

下面是在字段上创建索引的示例:name

db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1 },
        name: "idx_name_1"
      }
    ]
  }
)

在前面的例子中,我们让MongoDB命名我们的索引,但在本例中,我们命名索引。idx_name_1

下面是创建多个索引的示例:

db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1, type: -1 },
        name: "idx_name_1_type_-1"
      },
      {
        key: { "weight" : -1 },
        name: "idx_weight_-1"
      }
    ]
  }
)

在本例中,第一个索引是 和 字段上的复合索引,我们将其命名为 。name``type``idx_name_1_type_-1

第二个索引在字段上,我们称之为 。weight``idx_weight_-1

通配符索引

从MongoDB 4.2开始,上述所有三种方法都支持通配符索引(必须至少创建通配符索引)。featureCompatibilityVersion``4.2

通配符索引对于包含不同层次结构中具有不同字段的非结构化数据的集合非常有用。

有关示例,请参阅如何在 MongoDB 中创建通配符索引。

MongoDB文档

以下是上述每个文档的MongoDB文档链接:

  • [db.collection.createIndex()](https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/ "https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/")
  • [db.collection.createIndexes()](https://docs.mongodb.com/manual/reference/method/db.collection.createIndexes/ "https://docs.mongodb.com/manual/reference/method/db.collection.createIndexes/")
  • [createIndexes](https://docs.mongodb.com/manual/reference/command/createIndexes/ "https://docs.mongodb.com/manual/reference/command/createIndexes/")