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

Add $bsonSize expression

    • Fully Compatible
    • Query 2019-12-16

      The query team has discussed and agreed to the following syntax and semantics:
      Name: $bsonSize
      Rejected alternative names: $bsonElementSize, $bsonObjSize
      This expression takes an expression that evaluates to an object, and return the size of the object in bytes when encoded as BSON. The resulting size excludes any metadata in the document. Errors on non-nullish non-objects. If the expression is nullish, returns null.
      Syntax:

      { $bsonSize: <Expression> } 
      

      This will parse like all other unary expressions, and accept the argument by itself or as an array with one element.

      Original Ticket Description

      Twice in the last week someone asked how to compute object size (in bytes) in aggregation.

      Once it was when they were trying to rewrite mapReduce job in agg (mapReduce has access to Object.bsonsize() method) and the other time when they were trying to compute in aggregation average size of certain oplog entries.

      Seems like it could be useful and simple enough if it does exactly what Object.bsonsize() method does. Possible syntax: {$objSize:<expression-resolving-to-object>}. Alternative may be overloaded $bsonSize expression which takes any type and returns its size in bytes (usable for scalar types, arrays, objects, etc)

            Assignee:
            david.percy@mongodb.com David Percy
            Reporter:
            asya.kamsky@mongodb.com Asya Kamsky
            Votes:
            9 Vote for this issue
            Watchers:
            15 Start watching this issue

              Created:
              Updated:
              Resolved: