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.
In 3.6.x versions, the argument to the $pop mode will be validated more strictly once the featureCompatibilityVersion is set to "3.6".
The past behavior was that any BSON element was allowed in place of elt below:
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.
$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.