-
Type: New Feature
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Aggregation Framework
-
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)
- is related to
-
SERVER-7549 document level stats
- Backlog
-
SERVER-30967 Add $binarySize expression
- Closed