Tipos de datos admitidos

En esta página se describen los tipos de datos que admite Firestore.

Tipos de datos

En la siguiente tabla se enumeran los tipos de datos admitidos por Firestore. También se describe el orden de clasificación que se usa al comparar valores del mismo tipo:

Tipo de datos Ordenar por Notas
Matriz Por valores de elementos

Un array no puede contener otro valor de array como uno de sus elementos.

En una matriz, los elementos conservan la posición que se les ha asignado. Cuando se ordenan dos o más matrices, estas se ordenan en función de los valores de sus elementos.

Cuando se comparan dos arrays, se comparan los primeros elementos de cada array. Si los primeros elementos son iguales, se comparan los segundos elementos y así sucesivamente hasta que se encuentra una diferencia. Si un array se queda sin elementos que comparar, pero es igual hasta ese punto, el array más corto se ordena antes que el más largo.

Por ejemplo, [1, 2, 3] < [1, 2, 3, 1] < [2]. La matriz [2] tiene el valor del primer elemento más alto. La matriz [1, 2, 3] tiene elementos iguales a los tres primeros elementos de [1, 2, 3, 1], pero es más corta.

Booleano false < true
Bytes Orden de bytes Hasta 1.048.487 bytes (1 MiB - 89 bytes). Las consultas solo tienen en cuenta los primeros 1500 bytes.
Fecha y hora Cronológico Cuando se almacena en Firestore, solo se tiene en cuenta la precisión hasta los microsegundos. Cualquier precisión adicional se redondea hacia abajo.
Número de punto flotante Numérico Doble precisión de 64 bits según IEEE 754, incluidos NaN y +/-Infinity (normalizados).
Punto geográfico Por latitud y, a continuación, por longitud Por el momento, no recomendamos usar este tipo de datos debido a las limitaciones de las consultas. Por lo general, es mejor almacenar la latitud y la longitud como campos numéricos independientes. Si tu aplicación necesita geoconsultas sencillas basadas en la distancia, consulta Geoconsultas.
Entero Numérico 64 bits, firmado
Mapa Por claves y, a continuación, por valor

Representa un objeto insertado en un documento. Cuando se indexan, puedes hacer consultas en subcampos. Si excluyes este valor de la indexación, todos los subcampos también se excluirán.

El orden de las claves siempre se ordena. Por ejemplo, si escribes {c: "foo", a: "bar", b: "qux"} el mapa se ordena por clave y se guarda como {a: "bar", b: "qux", c: "foo"}.

Los campos de mapa se ordenan por clave y se comparan por pares clave-valor. Primero se comparan las claves y, después, los valores. Si los primeros pares clave-valor son iguales, se comparan los siguientes y así sucesivamente. Si dos mapas tienen los mismos pares clave-valor, se tiene en cuenta la longitud del mapa. Por ejemplo, los siguientes mapas están ordenados de forma ascendente:

{a: "aaa", b: "baz"}
{a: "foo", b: "bar"}
{a: "foo", b: "bar", c: "qux"}
{a: "foo", b: "baz"}
{b: "aaa", c: "baz"}
{c: "aaa"}

Nulo Ninguno
Referencia Por elementos de ruta (colección, ID de documento, colección, ID de documento, etc.) Por ejemplo, projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH].
Cadena de texto Orden de bytes codificado en UTF-8 Hasta 1.048.487 bytes (1 MiB - 89 bytes). Las consultas solo tienen en cuenta los primeros 1500 bytes de la representación UTF-8.
Vector Por dimensión y, a continuación, por valores de elementos individuales La dimensión máxima de la inserción admitida es 2048. Para almacenar vectores con dimensiones mayores, usa la reducción de dimensionalidad.

Orden de tipo de valor

Cuando una consulta incluye un campo con valores de tipos mixtos, Firestore usa un orden determinista basado en las representaciones internas. En la siguiente lista se muestra el orden:

  1. valores nulos
  2. valores booleanos
  3. Valores enteros y de punto flotante, ordenados numéricamente
  4. Valores de fecha
  5. Valores de cadena de texto
  6. Valores de bytes
  7. Referencias de Firestore
  8. Valores de puntos geográficos
  9. Valores de matriz
  10. Incrustaciones de vectores
  11. Asignar valores

Orden numérico

Firestore ordena todos los valores numéricos (Integer y Floating point) de forma intercalada. La comparación de números de coma flotante sigue el orden total de IEEE 754, con la excepción notable de que Firestore normaliza todos los valores NaN y los considera inferiores a -Infinity.