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

Investigate changes in SERVER-33582: Add $bsonSize expression

      Description

      Downstream Change Summary

      Adds a $bsonSize expression

      Description of Linked Ticket

      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)

      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:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              4 years, 10 weeks, 1 day ago