Show
Script to reproduce:
var createDoc = function(i) {
return {
name : 'object' + i,
value : i,
};
}
var createDocs = function(i) {
return [
createDoc(i),
createDoc(i + 1),
createDoc(i + 2),
createDoc(i + 3),
];
}
for (var i = 0; i < 10000; ++i) {
db.test.insert({
collection : createDocs(i)
})
}
db.test.createIndex({ 'collection.value' : 1 })
db.test.find({ collection : { $elemMatch : { value : { $gte : 9000, $lte : 9010 } } } }).explain()
I see the following output:
{
"queryPlanner" : {
"plannerVersion" : NumberInt(1),
"namespace" : "smartcat_isaev_dev.test",
"indexFilterSet" : false,
"parsedQuery" : {
"collection" : {
"$elemMatch" : {
"$and" : [
{
"value" : {
"$lte" : NumberInt(9010)
}
},
{
"value" : {
"$gte" : NumberInt(9000)
}
}
]
}
}
},
"winningPlan" : {
"stage" : "FETCH",
"filter" : {
"collection" : {
"$elemMatch" : {
"$and" : [
{
"value" : {
"$lte" : NumberInt(9010)
}
},
{
"value" : {
"$gte" : NumberInt(9000)
}
}
]
}
}
},
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"collection.value" : NumberInt(1)
},
"indexName" : "collection.value_1",
"isMultiKey" : true,
"direction" : "forward",
"indexBounds" : {
"collection.value" : [
"[-inf.0, 9010.0]"
]
}
}
},
"rejectedPlans" : [
]
},
"serverInfo" : {
"host" : "mongodb-dev",
"port" : NumberInt(27017),
"version" : "3.0.3",
"gitVersion" : "b40106b36eecd1b4407eb1ad1af6bc60593c6105"
},
"ok" : NumberInt(1)
}