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, |
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 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:
|
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:
- Valores nulos
- Valores booleanos
- Valores NaN
- Valores de números enteros y de coma flotante, en orden numérico
- Valores de fechas
- Valores de strings de texto
- Valores de bytes
- Referencias de Firestore
- Valores de puntos geográficos
- Valores de matrices
- Incorporaciones vectoriales
- Valores de mapas