Niektóre szczegóły dotyczące wyboru indeksu znajdują się w Problem JIRA SERVER-3071 ale nie mogę powiedzieć, czy wszystko jest nadal aktualne w wersji 3.0. W każdym razie:
MongoDB 3.0.2 wydaje się nie uwzględniaj interakcji indeksu dla zakresu zapytanie. Ale to będzie dla interwałów punktowych:
> db.orders.find( { item: {$eq : "abc123"}, qty: { $eq: 15 } } ).explain()
...
{
"stage" : "FETCH",
"inputStage" : {
"stage" : "KEEP_MUTATIONS",
"inputStage" : {
"stage" : "AND_SORTED",
"inputStages" : [
{
"stage" : "IXSCAN",
"keyPattern" : {
"qty" : 1
},
"indexName" : "qty_1",
"isMultiKey" : false,
"direction" : "forward",
"indexBounds" : {
"qty" : [
"[15.0, 15.0]"
]
}
},
{
"stage" : "IXSCAN",
"keyPattern" : {
"item" : 1
},
"indexName" : "item_1",
"isMultiKey" : false,
"direction" : "forward",
"indexBounds" : {
"item" : [
"[\"abc123\", \"abc123\"]"
]
}
}
]
}