通过查看Mongodb查询语句的执行计划,可以查看该语句通过查询优化器选中的执行计划和备选的执行计划。在实际查询过程中,因为Mongodb统计信息的更新和自动优化,对某些查询Mongodb给出的执行计划并不是最优的计划。这时,使用hint()指定索引,生成符合预期的执行计划。
在查询语句中添加hint(), 生成执行计划工程中, hint指定的索引方案会覆盖Mongodb默认的索引选择方案。
在查询语句中添加hint(),
db.collection.find().hint().
查看带有hint()查询语句的执行计划
db.collection.explain().find().hint()
hint()方法,接受一个带有字符串类型或object类型的参数。其中, 字符串类型的参数是索引名称。而object 类型的参数是索引键值的定义。
| 参数类型 | 描述 |
| 字符串 | 索引名称,如“user_1” |
| 对象 | 索引key定义,如{user: 1}, 当输入参数为{$natural:1},Mongodb查询不使用索引 |
在查询语句中使用hint()
db.users.find().hint({age:1})
db.users.find().hint(“age_1”)
db.users.find().hint({$natural:1})
db.users.find().hint({$natural:-1})