-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Server
-
Labels:None
Documentation Request Summary:
We need to document this minor breaking change in the compatibility notes for 3.6. The title and description of this ticket should be self-explanatory but please reach out to me with any questions.
Engineering Ticket Description:
In 3.6.x versions, the argument to the $pop mode will be validated more strictly once the featureCompatibilityVersion is set to "3.6".
Old behavior
The past behavior was that any BSON element was allowed in place of elt below:
db.collection.update({}, {$pop: {"array": <elt>}});
If <elt> was numeric and less than zero, then the $pop would remove the first element of the array. On the other hand, if <elt> was any non-numeric type or was a number greater than or equal to zero, $pop would remove the last element of the array.
New behavior
$pop will now fail at parse time if elt is either a non-numeric type, or is a number which is not equal to 1 or -1. All numeric BSON types are allowed (NumberInt, NumberLong, NumberDouble, NumberDecimal), but if the number is not an exact representation of 1 or -1, then $pop will fail to parse.
- documents
-
SERVER-29912 $pop update modifier should validate that its argument is either 1 or -1
- Closed