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 Ordenar por Notas
Número entero de 32 bits. Numérico

32 bits, firmado

Nota: Solo se admite en la edición Enterprise.

Número entero de 64 bits Numérico 64 bits, firmado
Arreglo Según los valores de los elementos

En las bases de datos de la edición Standard, un array no puede contener otro valor de array como uno de sus elementos. En las bases de datos de la edición Enterprise, un array puede contener un valor de array 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 —
Marca de tiempo de BSON Cronológico

Un valor de marca de tiempo de 64 bits que comprende segundos Unix y un contador de incremento.

Nota: Solo se admite en la edición Enterprise.

Bytes Orden de bytes En las bases de datos de la edición Standard, el valor no debe superar los 1,048,487 bytes (1 MiB - 89 bytes) y las consultas solo consideran los primeros 1,500 bytes. En las bases de datos de la edición Enterprise, no hay límite para el tamaño del valor (aparte de los límites de tamaño de las entradas de índice y de los documentos), y las consultas consideran el valor completo.
Bytes con subtipo Orden de bytes (subtipo y, luego, valor)

Secuencia de bytes binarios con un indicador de subtipo de BSON.

Nota: Solo se admite en la edición Enterprise.

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.
Decimal128 Numérico

Número de punto flotante decimal de 128 bits para aritmética de alta precisión.

Nota: Solo se admite en la edición Enterprise.

Número de punto flotante Numérico Precisión doble de 64 bits según IEEE 754, incluidos NaN y +/-Infinity (normalizados).
Punto geográfico Por latitud, luego por longitud Para realizar búsquedas basadas en la distancia, consulta Búsqueda geoespacial.
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, hasta que se encuentre una diferencia. 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"}

Clave máx. Ninguno

Es un valor especial que se compara con un valor más alto que todos los demás valores.

Nota: Solo se admite en la edición Enterprise.

Clave mín. Ninguno

Es un valor especial que se compara con un valor inferior al de todos los demás valores (excepto nulo).

Nota: Solo se admite en la edición Enterprise.

Nulo Ninguno —
ObjectId Orden de bytes

Un identificador de objeto de 12 bytes.

Nota: Solo se admite en la edición Enterprise.

Reference 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].
Expresión regular Por patrón y, luego, por opciones

Es un patrón de expresión regular y opciones.

Nota: Solo se admite en la edición Enterprise.

String de texto Orden de bytes con codificación UTF-8 En las bases de datos de la edición Standard, el valor no debe superar los 1,048,487 bytes (1 MiB - 89 bytes) y las consultas solo consideran los primeros 1,500 bytes. En las bases de datos de la edición Enterprise, no hay límite para el tamaño del valor (aparte de los límites de tamaño de las entradas de índice y de los documentos), y las consultas consideran el valor completo.
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 de clave mínimos (solo para la edición Enterprise)
  3. Valores booleanos
  4. Valores de números enteros y de punto flotante de 64 bits, en orden numérico En las bases de datos de la edición Enterprise, también se incluyen valores de números enteros de 32 bits y Decimal128.
  5. Valores de fechas
  6. Valores de strings de texto
  7. Valores de bytes. En la edición Enterprise, también se incluyen los bytes con valores de subtipo.
  8. Referencias de Firestore
  9. Valores de ObjectId (solo en la edición Enterprise)
  10. Valores de puntos geográficos
  11. Expresión regular (solo en la edición Enterprise)
  12. Valores de arreglos
  13. Embeddings de vector
  14. Valores de mapas
  15. Pares clave-valor máximos (solo para la edición Enterprise)

Orden numérico

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