This page describes the data types that Cloud Firestore supports.
|Data type||Sort order||Notes|
|Array||By elements and if elements equal, by array length||
Cannot contain another array value.
Arrays are sorted by elements. If elements are equal, the arrays are sorted by length.
|Bytes||Byte order||Up to 1,048,487 bytes (1 MiB - 89 bytes). Only the first 1,500 bytes are considered by queries.|
|Date and time||Chronological||When stored in Cloud Firestore, precise only to microseconds; any additional precision is rounded down.|
|Floating-point number||Numeric||64-bit double precision, IEEE 754.|
|Geographical point||By latitude, then longitude||—|
|Map||By keys, then by value||
Represents an object embedded within a document. When indexed, you can query on subfields. If you exclude this value from indexing, then all subfields are also excluded from indexing.
Key ordering is always sorted. For example, if you write
Map fields are sorted by key and compared by key-value pairs, first comparing the keys and then the values. If the first key-value pairs are equal, the next key-value pairs are compared, and so on. If two maps start with the same key-value pairs, then map length is considered. For example, the following maps are in ascending order:
|Reference||By path elements (collection, document ID, collection, document ID...)||For example,
|Text string||UTF-8 encoded byte order||Up to 1,048,487 bytes (1 MiB - 89 bytes). Only the first 1,500 bytes of the UTF-8 representation are considered by queries.|
Value type ordering
When a query involves a field with values of mixed types, Cloud Firestore uses a deterministic ordering based on the internal representations. The following list shows the order:
- Null values
- Boolean values
- Integer and floating-point values, sorted in numerical order
- Date values
- Text string values
- Byte values
- Cloud Firestore references
- Geographical point values
- Array values
- Map values