-
Type:
Bug
-
Resolution: Duplicate
-
Priority:
Major - P3
-
None
-
Affects Version/s: 3.4.9
-
Component/s: None
-
ALL
-
None
-
None
-
None
-
None
-
None
-
None
-
None
This may be a clarification to be made in the documentation, but here is my bug report anyway on this subject.
Say I have a collection of products (I removed ObjectID for readability) with an index on "unique_identifier" :
Collection : products
db.products.insert([
{"unique_identifier":"A", "name": "My first product"},
{"unique_identifier":"B", "name": "My second product"},
{"unique_identifier":"C", "name": "My third product"}
]);
db.products.createIndex({"unique_identifier":1});
And I created a view on this collection, with a simple $project stage to rename the "unique_identifier" field to "sku" (because I need to)
db.createView("pview", "products", [{"$project":{"sku":"$unique_identifier", "name":1}}]);
Also, for demonstration purpose, I have another view without a rename but just to remove _id field:
db.createView("pview2", "products", [{"$project":{"_id": 0}}]);
Using explain on a simple find() operation, we can see that on pview, the index on "unique_identifier" is not used and a COLLSCAN is used, whether on pview2, it's an IXSCAN.
db.pview.find({'unique_identifier':'A'}).explain()['stages'][0]["$cursor"]["queryPlanner"]["winningPlan"];
{ "stage" : "COLLSCAN", "direction" : "forward" }
db.pview2.find({'unique_identifier':'A'}).explain()['stages'][0]["$cursor"]["queryPlanner"]["winningPlan"];
{
"stage" : "FETCH",
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"unique_identifier" : 1
},
"indexName" : "unique_identifier_1",
"isMultiKey" : false,
"multiKeyPaths" : {
"unique_identifier" : [ ]
},
"isUnique" : false,
"isSparse" : false,
"isPartial" : false,
"indexVersion" : 2,
"direction" : "forward",
"indexBounds" : {
"unique_identifier" : [
"[\"A\", \"A\"]"
]
}
}
}
Note: I found out about this using $lookup on views with renamed fields to avoid a $lookup then a $project (without the index, the $lookup takes forever, obviously)
- duplicates
-
SERVER-27115 Track fields renamed by $project in aggregation for index consideration
-
- Closed
-