Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-29912

$pop update modifier should validate that its argument is either 1 or -1

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 3.5.10
    • Affects Version/s: None
    • Component/s: Querying
    • Labels:
      None
    • Minor Change
    • Query 2017-07-10

      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.

            Assignee:
            david.storch@mongodb.com David Storch
            Reporter:
            david.storch@mongodb.com David Storch
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: