MongoDB: Data Types


MongoDB stores documents on disk in the BSON serialization format. BSON is a binary representation of JSON documents, though BSON data format provides more data types than JSON. The mongo JavaScript shell and the MongoDB language drivers translate between BSON and the language-specific document representation.

BSON supports the following data types as values in documents. Each data type has a corresponding number (an integer ID number from 1 to 255) that can be used with the $type operator to query documents by BSON type.

MongoDB Data Types and Corresponding ID Number

Type Description Number
Double Represents a float value. 1
String BSON strings are UTF-8. In general, drivers for each programming language convert from the language’s string format to UTF-8 when serializing and deserializing BSON. This makes it possible to store most international characters in BSON strings with ease. [1] In addition, MongoDB $regex queries support UTF-8 in the regex string. 2
Object Represents an embedded documents. 3
Array Sets or lists of values can be represented as arrays: 4
Binary data Binary data is a string of arbitrary bytes, it cannot be manipulated from the shell. 5
Object id ObjectIds (MongoDB document identifier, equivalent to a Primary key) are: small, likely unique, fast to generate, and ordered. These values consists of 12-bytes, where the first four bytes are a timestamp that reflect the ObjectId’s creation. 7
Boolean A logical true or false. Use to evaluate whether a condition is true or false 8
Date BSON Date is a 64-bit integer that represents the number of milliseconds since the Unix epoch (Jan 1, 1970). This results in a representable date range of about 290 million years into the past and future. 9
Null It represents both a null value and a nonexistent field. 10
Regular Expression RegExp maps directly to a Javascript RegExp 11
JavaScript   13
Symbol Not supported by the shell. If the shell gets a symbol from the database, it will convert it into a string. 14
JavaScript (with scope)   15
32-bit integer Numbers without decimal points will be saved as 32-bit integers. 16
Timestamp BSON has a special timestamp type for internal MongoDB use and is not associated with the regular Date type. Timestamp values are a 64 bit value where :
  • the first 32 bits are a time_t value (seconds since the Unix epoch).
  • the second 32 bits are an incrementing ordinal for operations within a given second.
64-bit integer Numbers without a decimal point will be saved and returned as 64-bit integers. 18
Min key MinKey compare less than all other possible BSON element values, respectively, and exist primarily for internal use. 255
Max key MaxKey compare greater than all other possible BSON element values, respectively, and exist primarily for internal use. 127

Comparing values of different BSON types

When comparing values of different BSON types, MongoDB uses the following comparison order, from lowest to highest:

Order Data Types
1 MinKey (internal type)
2 Null
3 Numbers (ints, longs, doubles)
4 Symbol, String
5 Object
6 Array
7 BinData
8 ObjectId
9 Boolean
10 Date, Timestamp
11 Regular Expression
12 MaxKey (internal type)

Previous: Introduction to mongo Shell
Next: Databases, Documents, Collections

Follow us on Facebook and Twitter for latest update.