On this page
MongoDB Extended JSON
JSON can only represent a subset of the types supported by BSON. To preserve type information, MongoDB adds the following extensions to the JSON format:
- Strict mode. Strict mode representations of BSON types conform to the JSON RFC . Any JSON parser can parse these strict mode representations as key/value pairs; however, only the MongoDB internal JSON parser recognizes the type information conveyed by the format.
mongo
Shell mode. The MongoDB internal JSON parser and themongo
shell can parse this mode.
The representation used for the various data types depends on the context in which the JSON is parsed.
Parsers and Supported Format
Input in Strict Mode
The following can parse representations in strict mode with recognition of the type information.
- REST Interfaces
mongoimport
--query
option of various MongoDB tools- MongoDB Compass
Other JSON parsers, including mongo
shell and db.eval()
, can parse strict mode representations as key/value pairs, but without recognition of the type information.
Input in mongo
Shell Mode
The following can parse representations in mongo
shell mode with recognition of the type information.
- REST Interfaces
mongoimport
--query
option of various MongoDB toolsmongo
shell
Output in Strict mode
mongoexport
outputs data in Strict mode.
Output in mongo
Shell Mode
bsondump
outputs in mongo
Shell mode.
BSON Data Types and Associated Representations
The following presents the BSON data types and the associated representations in Strict mode and mongo
Shell mode.
Binary
<bindata>
is the base64 representation of a binary string.<t>
is a representation of a single byte indicating the data type. In Strict mode it is a hexadecimal string, and in Shell mode it is an integer. See the extended bson documentation. http://bsonspec.org/spec.html
Timestamp
<t>
is the JSON representation of a 32-bit unsigned integer for seconds since epoch.<i>
is a 32-bit unsigned integer for the increment.
Regular Expression
<sRegex>
is a string of valid JSON characters.<jRegex>
is a string that may contain valid JSON characters and unescaped double quote ("
) characters, but may not contain unescaped forward slash (/
) characters.<sOptions>
is a string containing the regex options represented by the letters of the alphabet.<jOptions>
is a string that may contain only the characters ‘g’, ‘i’, ‘m’ and ‘s’ (added in v1.9). Because theJavaScript
andmongo Shell
representations support a limited range of options, any nonconforming options will be dropped when converting to this representation.
Undefined Type
data_undefined
-
The representation for the JavaScript/BSON undefined type.
You cannot use
undefined
in query documents. Consider the following document inserted into thepeople
collection:db.people.insert( { name : "Sally", age : undefined } )
The following queries return an error:
db.people.find( { age : undefined } ) db.people.find( { age : { $gte : undefined } } )
However, you can query for undefined values using
$type
, as in:db.people.find( { age : { $type : 6 } } )
This query returns all documents for which the
age
field has valueundefined
.
MinKey
data_minkey
-
The representation of the MinKey BSON data type that compares lower than all other types. See Comparison/Sort Order for more information on comparison order for BSON types.
MaxKey
data_maxkey
-
The representation of the MaxKey BSON data type that compares higher than all other types. See Comparison/Sort Order for more information on comparison order for BSON types.