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 : |
17 |
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) |