-
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
-
None
-
None
-
None
-
None
-
None
-
None
-
None
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" : []
}
]
}