BSON
BSON is a computer data interchange format extending JSON. It is a binary form for representing simple or complex data structures including associative arrays, integer indexed arrays, and a suite of fundamental scalar types.
BSON originated in 2009 at MongoDB. Several scalar data types are of specific interest to MongoDB and the format is used both as a data storage and network transfer format for the MongoDB database, but it can be used independently outside of MongoDB.
Implementations are available in a variety of languages such as C, C++, C#, D, Delphi, Erlang, Go, Haskell, Java, JavaScript, Julia, Lua, OCaml, Perl, PHP, Python, Ruby, Rust, Scala, Smalltalk, and Swift.
Data types and syntax
BSON has a published specification. The topmost element in the structure must be of type BSON object andcontains 1 or more elements, where an element consists of a field name, a type, and a value. Field names are strings. Types include:
- Unicode string
- 32-bit integer
- 64-bit integer
- double
- decimal128, suitable as a carrier for decimal-place sensitive financial data and arbitrary precision numerics with 34 decimal digits of precision, a max value of approximately 106145
- datetime in UTC
- byte array
- Boolean
- null
- BSON object
- BSON array
- JavaScript code
- MD5 binary data
- Regular expression
Efficiency
Compared to JSON, BSON is designed to be efficient both in storage space and scan-speed. Large elements in a BSON document are prefixed with a length field to facilitate scanning. In some cases, BSON will use more space than JSON due to the length prefixes and explicit array indices.Example
A document such as will be stored as:\x16\x00\x00\x00 // total document size
\x02 // 0x02 = type String
hello\x00 // field name
\x06\x00\x00\x00world\x00 // field value
\x00 // 0x00 = type EOO