MongoDB collection.createIndex() 方法

Mongodb 是一个流行的 NoSQL 数据库,用于存储和管理半结构化数据。为了提高数据库的性能和查询速度,Mongodb 提供了多种索引类型,包括单键索引、复合索引和地理空间索引等。而创建索引的方法则是使用 createIndex() 方法。

如果您想同时创建多个索引,请使用 createIndexes() 方法。

语法

createIndex() 方法的基本语法如下:

db.collection.createIndex(keys, options)

其中,collection 是要创建索引的集合名称; keys 是要创建索引的字段名和排序方式,可以是一个对象,也可以是一个字符串,多个字段用逗号隔开; options 是可选的选项对象,用于指定索引的类型、名称、唯一性等。

使用场景

Mongodb 中的索引可以加速查询操作,对于大规模的数据集合尤其重要。通常,可以在以下情况下使用 createIndex() 方法创建索引:

  • 对于经常被查询的字段,可以创建单键索引或复合索引,以加快查询速度;
  • 对于需要按特定顺序返回结果的查询,可以创建排序索引;
  • 对于需要进行全文搜索的字段,可以创建文本索引;
  • 对于需要进行地理空间查询的地理位置字段,可以创建地理空间索引。

示例

下面我们来看两个使用 createIndex() 方法创建索引的示例。

示例 1:创建单键索引

假设我们有一个名为 users 的集合,其中包含以下文档:

{ "_id" : ObjectId("61817a49d414fb6ca06a6c38"), "name" : "Alice", "age" : 25, "gender" : "female" }
{ "_id" : ObjectId("61817a49d414fb6ca06a6c39"), "name" : "Bob", "age" : 30, "gender" : "male" }
{ "_id" : ObjectId("61817a49d414fb6ca06a6c3a"), "name" : "Charlie", "age" : 35, "gender" : "male" }

现在我们要对 age 字段创建单键索引,可以使用以下代码:

db.users.createIndex({ age: 1 })

这个代码将在 users 集合上创建一个升序的单键索引,用于加速按年龄查询。

示例 2:创建复合索引

假设我们有一个名为 sales 的集合,其中包含以下文档:

{ "_id" : ObjectId("61817a49d414fb6ca06a6c3b"), "date" : ISODate("2021-11-01T00:00:00Z"), "product" : "A", "price" : 10, "quantity" : 100 }
{ "_id" : ObjectId("61817a49d414fb6ca06a6c3c"), "date" : ISODate("2021-11-01T00:00:00Z"), "product" : "B", "price" : 15, "quantity" : 200 }
{ "_id" : ObjectId("61817a49d414fb6ca06a6c3d"), "date" : ISODate("2021-11-02T00:00:00Z"), "product" : "A", "price" : 12, "quantity" : 150 }
{ "_id" : ObjectId("61817a49d414fb6ca06a6c3e"), "date" : ISODate("2021-11-02T00:00:00Z"), "product" : "B", "price" : 18, "quantity" : 250 }

现在我们要对 date 和 product 字段创建复合索引,可以使用以下代码:

db.sales.createIndex({ date: 1, product: 1 })

这个代码将在 sales 集合上创建一个升序的复合索引,用于加速按日期和产品查询。

结论

createIndex() 方法是 Mongodb 中创建索引的主要方法之一。通过创建适当的索引,可以提高查询速度和性能,使数据库更加高效和易于管理。在实际使用中,需要根据数据集合的特点和查询需求,选择合适的索引类型和创建方式。