BSON is just a serialization that is binary used to shop documents and then make remote process calls in MongoDB.

The BSON requirements is situated at

Each BSON kind has actually both integer and sequence identifiers as placed in the table that is following

  • The $kind operator aids making use of these values to question areas by their particular BSON kind. $kind additionally aids the amount alias, which fits the integer, decimal, double, and long BSON types.
  • The $type aggregation operator comes back the BSON kind of its debate.
  • The $isNumber aggregation operator comes back true if its debate is really a BSON integer, decimal, double, or very long. New in variation 4.4
  • To find out an area s type, see Check kinds into the mongo Shell .

    In the event that you convert BSON to JSON, look at prolonged JSON guide.

    The sections that are following unique factors for specific BSON kinds.


    ObjectIds tend to be little, likely original, fast to create, and purchased. ObjectId values tend to be 12 bytes in total, composed of:

    • a 4-byte timestamp worth, representing the ObjectId s creation, assessed in moments because the Unix epoch
    • a 5-byte arbitrary price
    • a 3-byte incrementing counter, initialized up to a arbitrary worth

    As the BSON format itself is little-endian, the timestamp and countertop values tend to be big-endian, most abundant in considerable bytes showing up very first within the byte sequence.

    In MongoDB, each document kept in an assortment needs a distinctive _id area that will act as a key that is primary . The MongoDB driver automatically generates an ObjectId for the _id area if an inserted document omits the _id area.

    And also this relates to papers placed through enhance businesses with upsert: real .

    MongoDB consumers should include a _id area with a special ObjectId. Using ObjectIds when it comes to _id industry provides the next extra advantages:

    into the mongo layer, you have access to the creation period of the ObjectId , utilizing the look at this website ObjectId.getTimestamp() strategy.

    sorting on a field that is_id shops ObjectId values is approximately comparable to sorting by creation time.

    While ObjectId values should boost in the long run, they’re not fundamentally monotonic. It is because they:

    • Only have one 2nd of temporal quality, therefore ObjectId values developed in the same 2nd try not to have fully guaranteed ordering, and
    • Tend to be created by consumers, that may have system that is differing.


    BSON strings are UTF-8. As a whole, motorists for every program coding language convert through the language s format that is string UTF-8 when serializing and deserializing BSON. This will make it feasible to shop many characters that are international BSON strings with simplicity. [1] In addition, MongoDB $regex queries support UTF-8 into the regex string.


    BSON includes a timestamp that is special for inner MongoDB usage and it is maybe maybe maybe maybe not from the regular Date kind. This inner timestamp kind is really a 64 little little little bit worth where:

    • the most important 32 bits are really a time_t price (moments because the Unix epoch)
    • the smallest amount of considerable 32 bits are an incrementing ordinal for functions in just an offered second.

    Even though the BSON structure is little-endian, and so stores the smallest amount of significant bits very first, the mongod example constantly compares the time_t price prior to the ordinal worth on all systems, irrespective of endianness.

    In just a mongod that is single, timestamp values are often special.

    In replication, the oplog possesses ts area. The values in this area mirror the procedure time, which works on the BSON timestamp worth.

    The BSON timestamp kind is actually for inner MongoDB usage. For many instances, in application development, you shall desire to use the BSON day kind. See Date to learn more.

    Whenever placing a document which contains top-level industries with vacant timestamp values, MongoDB replaces the bare timestamp values using the present timestamp worth, because of the exception that is following. If the _id field itself includes a vacant timestamp worth, it’s going to continually be inserted as it is and maybe maybe not changed.

    Insert a document having a bare timestamp worth: