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 que admite Firestore. También se describe el orden de clasificación que se usa para comparar valores del mismo tipo:

Tipo de datos Orden de clasificación Notas
Arreglo Según los valores de los elementos

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

En los arreglos, los elementos conservan la posición que se les asignó. Para ordenar dos o más arreglos, se debe realizar con base en los valores de sus elementos.

Cuando se comparan dos arreglos, se comparan los primeros elementos de cada uno de ellos. Si son iguales, se deben comparar los segundos elementos y así sucesivamente, hasta que se encuentre una diferencia. Si un arreglo no tiene más elementos que comparar, pero es igual al otro arreglo hasta ese punto, debe ordenarse antes del arreglo más largo.

Por ejemplo, [1, 2, 3] < [1, 2, 3, 1] < [2]. El arreglo [2] tiene el valor más alto en el primer elemento. El arreglo [1, 2, 3] tiene elementos iguales a los primeros tres de [1, 2, 3, 1], pero su longitud es menor.

Booleano false < true -
Bytes Orden de bytes Hasta 1,048,487 bytes (de 1 MiB a 89 bytes). Las consultas solo consideran los primeros 1,500 bytes.
Fecha y hora Cronológico Cuando se almacena en Firestore, la precisión máxima es de microsegundos; cualquier precisión adicional se redondea hacia abajo.
Número de punto flotante Numérico Precisión doble de 64 bits, IEEE 754.
Punto geográfico Por latitud, luego por longitud Por el momento, no recomendamos usar este tipo de datos debido a las limitaciones de consultas. En general, es mejor almacenar la latitud y longitud como campos numéricos separados. Si tu app necesita consultas geográficas simples basadas en la distancia, revisa Consultas geográficas.
Número entero Numérico 64 bits, firmado
Mapa Por claves y, luego, por valor

Representa un objeto incorporado en un documento. Cuando se indexa, puedes hacer consultas por subcampos. Si excluyes este valor de la indexación, también se excluyen todos los subcampos.

Siempre se realiza el ordenamiento por clave. 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 mapas se ordenan por clave y se comparan con pares clave-valor. Primero se comparan las claves y, luego, los valores. Si los primeros pares clave-valor son iguales, se compararán los siguientes, y así sucesivamente. Si dos mapas tienen los mismos pares clave-valor, se considerará la longitud del mapa. Por ejemplo, estos mapas se ordenan en sentido 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"}

NaN Ninguno
Nulo Ninguno
Referencia Por elementos de ruta de acceso (colección, ID de documento, colección, ID de documento…) Por ejemplo, projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH].
String de texto Orden de bytes con codificación UTF-8 Hasta 1,048,487 bytes (de 1 MiB a 89 bytes). Las consultas solo consideran los primeros 1,500 bytes de la representación UTF-8.
Vector Por dimensión y, luego, por valores de elementos individuales La dimensión de incorporación máxima admitida es 2,048. Para almacenar vectores con dimensiones más grandes, usa la reducción de dimensiones.

Orden de los tipos de valor

Cuando una consulta incluye un campo con valores de varios tipos, Firestore usa un orden determinista basado en representaciones internas. La siguiente lista muestra el orden:

  1. Valores nulos
  2. Valores booleanos
  3. Valores NaN
  4. Valores de números enteros y de coma flotante, en orden numérico
  5. Valores de fechas
  6. Valores de strings de texto
  7. Valores de bytes
  8. Referencias de Firestore
  9. Valores de puntos geográficos
  10. Valores de matrices
  11. Incorporaciones vectoriales
  12. Valores de mapas