Ты прав.MongoDB по-прежнему использует индекс даже при использовании другого поля в поиске.Вы можете проверить это с помощью db.things.explain().find({foo: 'something', bar: 'else'})
.
. Вы получите что-то вроде:
"winningPlan" : {
"stage" : "FETCH",
"filter" : {
"bar" : {
"$eq" : "else"
}
},
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"foo" : 1
},
"indexName" : "foo_1",
"isMultiKey" : false,
"multiKeyPaths" : {
"foo" : [ ]
},
"isUnique" : false,
"isSparse" : false,
"isPartial" : false,
"indexVersion" : 2,
"direction" : "forward",
"indexBounds" : {
"foo" : [
"[\"something\", \"something\"]"
]
}
}
Этот список показывает, как mongoDB выполнял ваш поиск (он начинается снизу вверх).Первый этап с «IXSCAN» показывает, что mongoDB сначала использовал индекс, а затем попытался выполнить остальной поиск с помощью «FETCH»