Details
-
Bug
-
Resolution: Fixed
-
Major - P3
-
4.0.9
-
None
-
Minor Change
-
ALL
-
Query 2019-12-02, Query 2019-12-16
-
0
Description
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" : []
|
}
|
]
|
}
|
Attachments
Issue Links
- is documented by
-
DOCS-13323 Investigate changes in SERVER-40687: Positional projection ($) only considers first path component when comparing to query document
-
- Closed
-