|
Here is a simpler way to reproduce this issue:
> db.adminCommand({setParameter: 1, logComponentVerbosity: {query: {verbosity: 5}}});
|
> db.elem.drop()
|
> db.elem.insert({arr: [1, 2, 3]})
|
> db.elem.ensureIndex({arr: 1})
|
> db.elem.find({arr: {$elemMatch: {$ne: 4}}}).explain(true);
|
The explain output shows that the planner falls back to a collection scan rather than using an indexed plan:
{
|
"cursor" : "BasicCursor",
|
"isMultiKey" : false,
|
"n" : 1,
|
"nscannedObjects" : 1,
|
"nscanned" : 1,
|
"nscannedObjectsAllPlans" : 1,
|
"nscannedAllPlans" : 1,
|
"scanAndOrder" : false,
|
"indexOnly" : false,
|
"nYields" : 0,
|
"nChunkSkips" : 0,
|
"millis" : 0,
|
"allPlans" : [
|
{
|
"cursor" : "BasicCursor",
|
"isMultiKey" : false,
|
"n" : 1,
|
"nscannedObjects" : 1,
|
"nscanned" : 1,
|
"scanAndOrder" : false,
|
"indexOnly" : false,
|
"nChunkSkips" : 0
|
}
|
],
|
"server" : "Macintosh.local:27017",
|
"stats" : {
|
"type" : "COLLSCAN",
|
"works" : 3,
|
"yields" : 0,
|
"unyields" : 0,
|
"invalidates" : 0,
|
"advanced" : 1,
|
"needTime" : 1,
|
"isEOF" : 1,
|
"docsTested" : 1,
|
"children" : [ ]
|
}
|
}
|
|