MongoDB索引(索引基本操作)(二)

1.     唯一索引

对字段设置唯一索引时,可以保证字段都是唯一性   

db.collection.createIndex({field1:boolean, field2:boolean },{unique: true}) 

说明:我们在新建字段为唯一索引时,对应的字段不存在,索引会将其作为null存储,如果对文档新增第一条时,没保存字段对应的值时,会以null保存,第二条还是对指定字段对应的值,新增数据时,之前已经存在null,所以会导致新增失败。

对文档中已经存在的相同的字段新建唯一索引

    唯一索引不能够创建在具有重复值的键上,如果你一定要在这样的键上创建,使用dropDups参数,系统对重复值的键上只保留第一条记录,剩下的记录会被删除

db.orders.createIndex({onumber:1},{unique:true,dropDups:true})  

2.      索引的名称

我们之前在创建索引时,没指定索引名称,MongoDB会生成一个默认的索引名称,我们可以通过name参数来指定我们新建索引的名称

db.collection.createIndex({field1:boolean,field2:boolean },{name"index_name"})

 3.      后台方式创建索引

             background 在创建索引时,会阻塞MongoDB其它操作,比如查询MongoDB时,background为trues时可指定以后台方式创建索引,默认值时false

db.collection.createIndex({{field1:boolean,field2:boolean }} },{background: true})  

 4.      稀疏索引  

         sparse:稀疏索引只包含有索引字段的文档,即使索引字段包含空值,指数跳过缺少索引字段。索引是“稀疏的”,因为它不包含集合的所有文档。与之相反,非稀疏索引中包含一个集合中的所有文档,这些文档中不包含索引字段的空值。类似于$exists用来判断一个field是否存在

  1. db.collection.createIndex({{field1:boolean,field2:boolean }} },{ sparse: true})  
 稀疏索引只包含有索引字段的文档,即使索引字段包含空值,指数跳过缺少索引字段


 5.        执行计划

MongoDB 提供了一个 explain 命令让我们获知系统如何处理查询请求。利用 explain 命令,我们可以很好地观察系统如何使用索引来加快检索,同时可以针对性优化索引。

db.orders.find({onumber:1}).hint("onumber_1").explain()  

对一些比较重要的参数说明

    1) n:当前查询返回的文档数量。

    2)millis:当前查询所需时间,毫秒数。

   3)indexBounds:当前查询具体使用的索引。

   4)nscanned:扫描document的行数。

   5)cursor:返回游标类型(BasicCursor和BtreeCursor),我们这边使用BtreeCursor类型。

   6)nscannedObjects:被扫描的文档数量。

   7)scanAndOrder:是否在内存中排序。


猜你喜欢

转载自blog.csdn.net/zhuchunyan_aijia/article/details/80453832
今日推荐