`

mongodb的索引操作

阅读更多

    在mongodb中,当我们一个集合中的数据量非常大时,比如几百万条数据,如果不使用索引,对数据的查询就会进行全表扫描,这个时候查询的速度就会非常的慢,此时我们就需要为集合建立上索引,从而加快查询的速度。既然索引可以加快我们的查询速度,那么是否为集合的每个字段上都建立索引呢?这个显然是不正确的,虽然索引可以加快我们的查询速度,但是在插入、更新、删除数据时就会相应的变慢,因为此时需要维护索引,因此我们理性的在集合上创建索引。

 

建立索引的语法:

db.collections.createIndex({

    key1 : 1,  // 表示为key1创建一个正序索引

    key2 : -1 // 表示为key2创建一个倒叙索引

} ,{

 background :true, // true : 表示后台创建索引 false:表示同步创建索引,会阻塞mongodb其余的操作

 unique : true , // true: 表示创建唯一索引  false:表示非唯一。 对于散列索引,该选项无效。

 name : 'index_1', // name 表示指定索引的名字,如果没有指定,mongodb会默认生成一个名字。

 partialFilterExpression :null, // 表示根据某些条件建立索引,比如:为name=5的字段建立索引

 sparse : true, // true: 表示建立稀疏索引,表示只有存在该字段时才在该字段上建立索引 false:不是稀疏索引

 expireAfterSeconds : 10, //表示10秒后,该文档会被删除

 weights : null // 表示权重,全文索引中指定字段的权重,默认情况下是1

 default_language:'zhs', // 全文索引分词的语言,默认情况下是英文

 ......

});

 

默认的 _id 索引:

对应默认的_id索引,mongodb会默认为此字段加上一个唯一索引,且此索引无法删除。

 

建立一个单键索引:

db.persons.createIndex({"userId": 1}, {background:true,name:"index_01"});

    上述表示在 userId上建立一个正序索引,在后台进行创建, 索引的名字是 index_01

 

创建一个复合索引:

db.persons.createIndex({"userId": 1,"age":-1}, {background:true,name:"index_02"})

    注意:1、上述使用了 userId 和 age 创建了一个复合索引。

               2、最多可以使用 31 个字段组合成复合索引

               3、复合索引的创建时字段的顺序是有影响的,比如此时是userId然后是age,那么在进行数据查询时,使用userId查可以使用索引,使用userId和age查也可以使用索引,但是使用age和userId进行查是不会使用索引的。

               4、总结上面的3就是,mongodb的复合索引,支持前缀查找,即查询的字段的顺序如果是创建字段的前缀时,则可以使用索引。比如:userId就是 userId和age的前缀,那么就可以使用索引。

 

全文索引:

 

地理位置索引:

 

查看集合上的索引:

db.persons.getIndexes()

 删除集合上的索引:

// 删除索引名字是 index_01 的索引
db.persons.dropIndex("index_01");
// 删除所有的索引     
db.persons.dropIndexes();

 重新构建索引:

db.persons.reIndex()

    该操作会删除这个集合上所有的索引,然后进行重新构建。

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    11、MongoDB聚合操作及索引使用详解-ev.rar

    11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar...

    MongoDB数据库索引介绍.pptx

    索引可以显著地加速查询性能,但会降低写操作性能。 ### 单个集合支持最大索引个数 64 每个集合最多支持 64 个索引。 ### 将索引 cache 在内存中以获得更好性能 将索引 cache 在内存中可以显著地提高查询性能。 ...

    MONGODB的索引探究

    MongoDB的索引建立在Collection(表)级别,采用B-树数据结构来加速查询和排序操作。 1. 默认索引:MongoDB会在每个Collection上自动创建一个唯一的 `_id` 索引,用于标识每条文档的唯一性。如果未明确指定,...

    MongoDB学习笔记(六) MongoDB索引用法和效率分析

    MongoDB是一种流行的NoSQL数据库,它的索引机制与传统的关系型数据库类似,旨在提升查询和排序的速度。在MongoDB中,索引对于优化查询性能至关重要,尤其在处理大量数据时。下面将详细介绍MongoDB中不同类型的索引...

    MongoDB索引限制.pdf

    - **索引键长度限制**:从 MongoDB 2.6 版本开始,如果索引字段值超出索引键长度限制,MongoDB 不会创建该索引。这防止了因过长的键值导致的资源浪费。 - **插入文档限制**:如果插入文档的索引字段值超过限制,...

    mongodb搭建,shell操作,索引,副本集

    #### MongoDB索引 - **介绍**:索引能够显著提高查询性能,MongoDB支持单字段索引、复合索引、唯一索引等多种类型的索引。 - **后台创建索引**:可以在运行时创建索引,而无需停止服务。 - **索引类型**: - **单...

    MongDB聚合与索引操作

    根据实训平台中的指导,完成第26章MongoDB索引操作实验。 #### 三、实验过程详解 1. **启动MongoDB服务**: ```shell systemctl start mongod ``` 启动完成后,可以通过以下命令确认服务是否正常运行: ``...

    MongoDB索引管理.pdf

    创建索引时,默认情况下,MongoDB 会对相关集合进行锁定,这可能导致在创建过程中对其他操作造成短暂的影响。为了避免这种情况,你可以选择在后台创建索引,这样索引构建过程不会阻塞其他读写操作。使用 `...

    MongoDB索引管理与高级索引.pdf

    总之,MongoDB的索引管理是优化数据库性能的关键,理解和熟练运用不同类型的索引以及相关的管理操作,能够极大地提升查询效率,同时降低不必要的资源消耗。在设计和管理索引时,需要结合实际的查询需求和数据模式,...

    MongoDB索引与查询.pdf

    3. **hint操作**:`hint()` 方法用于强制 MongoDB 使用特定的索引来执行查询,这在需要优化查询性能时特别有用。例如,当系统选择的默认索引不是最有效时,可以使用 `hint()` 指定最佳索引。 4. **索引的存储和性能...

    SpringBoot MongoDB 索引冲突分析及解决方法

    该方法主要通过spring-data-mongo 实现基于 MongoDB 的 ORM-Mapping 能力,通过一些简单的注解、Query 封装以及工具类,就可以通过对象操作来实现集合、文档的增删改查。 一、背景 spring-data-mongo 是 MongoDB ...

    MongoDB索引的创建docx.pdf

    在 MongoDB 中,索引的创建对于优化查询效率至关重要。以下是关于MongoDB创建索引的一些详细知识点: 1. **创建索引的方法**: MongoDB 使用 `ensureIndex()` 方法来创建索引。尽管在较新的版本中,`createIndex()...

    MongoDB索引使用详解

    MongoDB索引是数据库性能优化的关键工具,它们类似于书籍的目录,可以帮助快速定位到所需的数据,从而大大提高查询效率。在没有索引的情况下,MongoDB必须遍历整个集合来找到匹配的文档,这在数据量大的时候会导致...

    MongoDB 索引 和explain分析查询速度1

    创建索引时还可以设置其他参数,例如`sparse`(稀疏索引)只索引包含指定字段的文档,`background`(后台创建)允许在不影响其他操作的情况下创建索引。 四、使用`explain` `explain`是分析查询性能的重要工具,它...

    Mongodb索引的优化

    - **避免索引过多**:虽然索引能提高查询速度,但过多的索引会增加存储开销,并可能降低写操作性能。 - **覆盖索引**:当查询只需要索引字段而无需访问文档本身时,使用覆盖索引可以大大提高性能。 - **使用前缀索引...

    mongodb相关操作.txt

    **知识点2:MongoDB索引创建** 在MongoDB中,合理地使用索引能够极大地提高查询效率。根据给定的部分内容,我们可以学习到几种常见的索引创建方法: 1. **创建过期索引**: - `db.history.ensureIndex({"create_...

    MongoDB索引工作原理解析:深入探索高效数据检索的秘诀

    3. **高性能**:MongoDB优化了读写操作,提供了高性能的数据访问,特别是在处理大量的读写操作时。 4. **高可用性**:通过副本集(Replica Sets)实现,副本集是一组维护相同数据集的MongoDB服务器,可以提供数据的...

    关于MongoDB索引管理-索引的创建、查看、删除操作详解

    在MongoDB中,索引的管理包括创建、查看和删除等操作,这些操作对于优化数据库性能至关重要。 1. **创建/重建索引** - **创建索引**:MongoDB 使用 `ensureIndex()` 方法创建新索引。例如,`db.COLLECTION_NAME....

Global site tag (gtag.js) - Google Analytics