关系型数据库或多或少接触过,它的主要目的是加速查询的速度。MongoDB作为一种数据库,当然也提供了索引的操作。

 

1万条测试数据。

 

mongodb进程 mongodb in action_mongodb进程

 

name为"p10000"的文档的执行计划,使用explain()函数。

MongoDB 3.0开始之后的版本使用explain() 需要填写参数,"queryPlanner","executionStats","allPlansExecution",如果不添加参数,默认为"queryPlanner"。

"executionStats"。

 

mongodb进程 mongodb in action_字段_02

  executionTimeMillis:  执行花费了4毫秒。

  taotalDocsExamined:  扫描了10000个文档。

  先不做评论。看看之后加上索引会是什么结果。

> 索引命令(ensureIndex)

 下面为name字段加上索引。

 

mongodb进程 mongodb in action_mongodb进程_03

 我们来看下加上索引后的执行计划。

 

mongodb进程 mongodb in action_安全认证_04

 executionTimeMillis:  执行花费了0毫秒。

 taotalDocsExamined:  扫描了1个文档。

 对比一下没加索引之前的执行计划,可以看到两者速度相差不是一点点。

 

> 索引名称

 手动指定唯一性的索引名称是很有必要的,这也方便我们后期对索引进行维护。

name建立索引,并且命名为"product_name_index"。

 

mongodb进程 mongodb in action_安全认证_05

getIndexes()命令来查看集合中有哪些索引,我们看到刚刚创建的名为"product_name_index"的索引包含在列。

 

> 唯一索引

ensureIndex第二个参数,我们看下实例。

 

mongodb进程 mongodb in action_mongodb进程_06

name为"p10000"的文档,插入失败,提示索引中的键值重复。

 

> 删除索引(dropIndex)

 我们都知道索引能提高查询的效率,但是却会影响插入更新等操作的性能,所以有时候我们会根据业务的需要,实时的维护,删除不必要的索引。

 

mongodb进程 mongodb in action_安全认证_07

 

 

 有关索引的基本知识就介绍到这里,下一篇学习一下关于安全认证方面的知识。