| Steps To Reproduce: |
MongoDB version is 4.1.5
Create base collection, and its index.
> db.base.createIndex({x:1})
|
{
|
"createdCollectionAutomatically" : true,
|
"numIndexesBefore" : 1,
|
"numIndexesAfter" : 2,
|
"ok" : 1
|
}
|
Explain sort query on base collection. It uses IXSCAN.
> db.base.find({}).sort({x:1}).explain()
|
{
|
"queryPlanner" : {
|
"plannerVersion" : 1,
|
"namespace" : "test.base",
|
"indexFilterSet" : false,
|
"parsedQuery" : {
|
|
},
|
"queryHash" : "B7791BAD",
|
"planCacheKey" : "B7791BAD",
|
"winningPlan" : {
|
"stage" : "FETCH",
|
"inputStage" : {
|
"stage" : "IXSCAN",
|
"keyPattern" : {
|
"x" : 1
|
},
|
"indexName" : "x_1",
|
"isMultiKey" : false,
|
"multiKeyPaths" : {
|
"x" : [ ]
|
},
|
"isUnique" : false,
|
"isSparse" : false,
|
"isPartial" : false,
|
"indexVersion" : 2,
|
"direction" : "forward",
|
"indexBounds" : {
|
"x" : [
|
"[MinKey, MaxKey]"
|
]
|
}
|
}
|
},
|
"rejectedPlans" : [ ]
|
},
|
"serverInfo" : {
|
"host" : "8ab9c3a1df86",
|
"port" : 27017,
|
"version" : "4.1.5",
|
"gitVersion" : "f3349bac21f200cf2f9854eb51b359d3cbee3617"
|
},
|
"ok" : 1
|
}
|
Create a view based on base collection
> db.createView("view", "base", [{$project:{x:1}}])
|
{ "ok" : 1 }
|
Explain sort query on view collection. It uses COLLSCAN.
> db.view.find({}).sort({x:1}).explain()
|
{
|
"stages" : [
|
{
|
"$cursor" : {
|
"query" : {
|
|
},
|
"fields" : {
|
"x" : 1,
|
"_id" : 1
|
},
|
"queryPlanner" : {
|
"plannerVersion" : 1,
|
"namespace" : "test.base",
|
"indexFilterSet" : false,
|
"parsedQuery" : {
|
|
},
|
"queryHash" : "8B3D4AB8",
|
"planCacheKey" : "8B3D4AB8",
|
"winningPlan" : {
|
"stage" : "COLLSCAN",
|
"direction" : "forward"
|
},
|
"rejectedPlans" : [ ]
|
}
|
}
|
},
|
{
|
"$project" : {
|
"_id" : true,
|
"x" : true
|
}
|
},
|
{
|
"$sort" : {
|
"sortKey" : {
|
"x" : 1
|
}
|
}
|
}
|
],
|
"ok" : 1
|
}
|
|