Uploaded image for project: 'Documentation'
  1. Documentation
  2. DOCS-13323

Investigate changes in SERVER-40687: Positional projection ($) only considers first path component when comparing to query document

      Description

      Downstream Change Summary

      In 4.3 users will be allowed to apply the positional projection to fields that are not part of the query document.

      For example db.c.find(

      Unknown macro: {a}

      ,

      Unknown macro: {b.$}

      ).

      This was illegal in 4.2 (the positional projection had to be on a field used in the filter).

      This brings the behavior of positional projection and positional update closer together.

      Description of Linked Ticket

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

      Scope of changes

      Impact to Other Docs

      MVP (Work and Date)

      Resources (Scope or Design Docs, Invision, etc.)

            Assignee:
            jeffrey.allen@mongodb.com Jeffrey Allen
            Reporter:
            backlog-server-pm Backlog - Core Eng Program Management Team
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved:
              3 years, 44 weeks, 1 day ago