MongoDB 索引

使用索引查询几乎可以瞬间完成,但是对于添加的每一个索引,每次写(插入,更新,删除)操作都将耗费更多的时间。这是因为每次数据发生变动时,MongoDB不仅要更新文档,还要更新集合上的所有索引。因此,MongoDB限制每个集合最多只能有64个索引。但是,通常在一个集合上,不应该拥有两个以上的索引。

在某字段上创建索引:db.test.ensureIndex({"name": 1})

查看MongoDB在执行查询过程中所做的事情:db.test.find({"name": "zhangsan"}).explain()

查看MongoDB创建索引的进度:1. db.currentOp()   或者  2.检查MongoDB的日志

终止正在进行的索引创建过程:db.killOp()

查看当前集合中的所有索引:db.test.getIndexes()

返回当前数据库中的所有索引:db.system.indexs.find()

删除一个特定集合上的所有索引:db.test.dropIndexes()

删除集合中的某一个索引:db.test.dropIndex({x: 1, y: -1})

也可以直接执行命令进行删除:

db.runCommand({dropIndexes:'foo', index : {y:1}})//删除集合foo中{y:1}的索引

db.runCommand({dropIndexes:'foo', index : '*'})  //删除集合foo中所有的索引


使用 explain() 返回查询计划
在任意游标(例如 查询)后面附加 explain() 方法可以返回一个含有查询过程的统计数据的文档,包括所使用的索引,扫描过的文档数,查询所消耗的毫秒数。

使用 hint() 控制索引使用
在任意游标(例如 查询)后面附加 hint() 方法并以索引作为方法参数可以强制MongoDB使用指定的索引来匹配查询。

您可以使用联合使用 hint() and explain() 来逐个对比每个索引的效率。您可以在 hint() 方法中指定 $natural 操作符来避免MongoDB使用任何索引(即:查询不会使用索引)。


MongoDB索引使用详解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值