BSON

Source: Wikipedia, the free encyclopedia.
BSON
Filename extension
.bson
Internet media typeapplication/bson[1]
Type of formatData interchange
Extended fromJSON
Websitebsonspec.org

BSON (/ˈbsən/[2]) is a computer data interchange format. The name "BSON" is based on the term JSON and stands for "Binary JSON".[2] It is a binary form for representing simple or complex data structures including associative arrays (also known as name-value pairs), 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

Data types and syntax

BSON has a published specification.[4][5] The topmost element in the structure must be of type BSON object and contains 1 or more elements, where an element consists of a field name, a type, and a value. Field names are strings. Types include:

An important differentiator to JSON is that BSON contains types not present in JSON (e.g. datetime and byte array) and offers type-strict handling for several numeric types instead of a universal "number" type. For situations where these additional types need to be represented in a textual way, MongoDB's Extended JSON format[7] can be used.

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.[2]

Example

A document such as {"hello": "world"} 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 (size of value, value, null terminator)
\x00                      // 0x00 = type EOO ('end of object')

See also

References

  1. ^ "BSON Support in ASP.NET Web API 2.1 - ASP.NET 4.x". Microsoft Docs. 2014-01-20. Retrieved 2010-01-12.
  2. ^ a b c "BSON (Binary JSON) Serialization". Retrieved 23 November 2021.
  3. ^ "BSON Implementation Projects". Retrieved 2021-11-24.
  4. ^ "BSON (Binary JSON): Specification". bsonspec.org. Retrieved 2021-11-24.
  5. ^ "Introducing NoSQL and MongoDB | What Is NoSQL? | InformIT". www.informit.com. Retrieved 2018-01-17.
  6. ^ "regex – Tools for representing MongoDB regular expressions — PyMongo 3.6.0 documentation". api.mongodb.com. Archived from the original on 2016-05-10. Retrieved 2018-01-17.
  7. ^ "MongoDB Extended JSON documentation". docs.mongodb.com. Retrieved 2020-05-03.

External links

This page is based on the copyrighted Wikipedia article: BSON. Articles is available under the CC BY-SA 3.0 license; additional terms may apply.Privacy Policy