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:是否在内存中排序。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值