-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: 4.0.9
-
Component/s: None
-
Minor Change
-
ALL
-
Query 2019-12-02, Query 2019-12-16
-
0
Using a non-matching subfield (e.g., query: fieldExists.something: 1 projection: fieldExists.fieldDoesntExist.$) with the $ projection operator does not return the Positional projection 'fieldExists.fieldDoesntExist.$' does not match the query document error.
Given the document:
{ "_id" : ObjectId("5cb8ab2f20926051ca9e2cd7"), "AOE" : [ { "areaOfExpertise" : "aoe1", "subAOE" : [] }, { "areaOfExpertise" : "aoe2", "subAOE" : [] } ], "poolName" : "newpool", "__v" : 0 }
The {"AOE.doesntExist.$":1} projection is treated the same as the correct {"AOE.$":1} projection:
> db.proj.find({ poolName: "newpool", "AOE.areaOfExpertise": "aoe1" },{"AOE.doesntExist.$":1}).pretty() { "_id" : ObjectId("5cb8ab2f20926051ca9e2cd7"), "AOE" : [ { "areaOfExpertise" : "aoe1", "subAOE" : [] } ] } > db.proj.find({ poolName: "newpool", "AOE.areaOfExpertise": "aoe1" },{"AOE.$":1}).pretty() { "_id" : ObjectId("5cb8ab2f20926051ca9e2cd7"), "AOE" : [ { "areaOfExpertise" : "aoe1", "subAOE" : [] } ] }