您的位置:

Mongo创建索引

一、什么是Mongo索引?

MongoDB索引对于数据查询和处理是非常重要的。在MongoDB中,索引通常指的是B树索引,这个索引可以加速数据的查找。在数据集比较大时,通过建立索引来加速查询是一个不错的选择。

只需要简单地把索引留在需要的字段上,便可以使查询的速度提高数倍。即使是对大型数据集进行复杂查询,也可以使用索引来提高查询速度。

但是,也需要注意的是索引并不是万能的,不当的索引还会降低查询效率。

二、如何创建索引?

1. 单字段索引

在MongoDB中,使用createIndex()方法来为一个field创建索引。如下代码所示,我们为students集合的"age"字段创建了一个单字段索引:


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

其中,1代表升序索引,-1代表降序索引。

我们还可以使用如下代码来查看集合中所有的索引:


db.students.getIndexes()

2. 多字段索引

在mongo中创建多字段索引需要将多个字段传递给createIndex()方法。如下代码所示:


db.students.createIndex({ name: 1, age: -1 })

这个语法表示name属性按照升序排列,并且age属性按照降序排列。

对于多字段索引来说,可以使用如下代码来查看集合中所有的索引:


db.students.getIndexes()

三、常用的Mongo索引类型

1. 索引类型——单键索引

单键索引是最为基础的索引类型,它在一个字段上建立的B树索引。在单键索引上,MongoDB默认使用1做为升序排序,-1做为降序排序。

例如:


db.students.ensureIndex({ name: 1 })

表示在name字段上建立一个升序的单键索引。

2. 索引类型——复合索引

比单键索引更为复杂的是复合索引,它通过多个字段来建立B树索引,例如:


db.students.ensureIndex({name: 1, age: -1})

表示在name字段上建立一个升序的单键索引,同样在age字段上建立一个降序的单键索引。

3. 索引类型——全文索引

全文索引可以很方便地对文本字段进行搜索。MongoDB的全文索引和关联数据库的全文索引比较相似。

在MongoDB中,我们使用text来表示全文索引。

例如:


db.inventory.createIndex({ 'description.text': 'text' })

表示在description字段中的text属性上创建一个全文索引。

四、索引的优点和缺点

1. 优点

1)查询性能更佳

2)减少MongoDB的扫描结果集的次数

3)可以强制执行唯一约束

2. 缺点

1)创建索引需要额外的空间。

2)对于频繁的更新和删除操作需要耗费一定的时间。

3)索引只能用于限制数据的数量,而不能减小数据的规模。

五、Mongo创建索引实战

1. 创建单字段索引

使用createIndex()方法为一个字段创建索引。


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

2. 创建多字段索引

将多个字段传递给createIndex()方法,创建多字段索引。


db.students.createIndex({ name: 1, age: -1 })

3. 创建全文索引

使用text来表示全文索引,例如:


db.inventory.createIndex({ 'description.text': 'text' })

六、结论

MongoDB中创建索引可以在数据量较大、查询较为复杂的情况下极大地提高查询效率。但同时,不当使用索引会有一定的影响。因此,在使用索引时,建议根据实际情况进行合理使用。