我与这些指标的集合:MongoDB中不使用索引
db.colaboradores.getIndexKeys()
[ { "_id" : 1 }, { "nome" : 1 }, { "sobrenome" : 1 } ]
和像
db.colaboradores.find({_id: ObjectId("5040e298914224dca3000006")}).explain();
thatworks罚款指标
{
"cursor" : "BtreeCursor _id_",
"nscanned" : 0,
"nscannedObjects" : 0,
"n" : 0,
"millis" : 0,
}
但查询运行时:
db.colaboradores.find({nome: /^Administrador/}).explain()
的MongoDB不使用索引更多:
{
"cursor" : "BtreeCursor nome_1",
"nscanned" : 10000,
"nscannedObjects" : 10000,
"n" : 10000,
"millis" : 25,
}
任何解决方案? 谢谢!
威廉,那么正确的方法是什么?感谢文章。 – user1639326
如果你打算在'nome'上进行查询,你需要有一个额外的索引,'nome'是索引中的第一个元素。 –
@WilliamZ好信息,但是从原始帖子中的getIndexKey()的输出来看,他已经有了'nome'上的单键索引(它显示了3个独立的单键索引,而不是一个复合索引) 。 – JohnnyHK