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 |
|---|---|---|
| Arreglo | Según los valores de los elementos |
En las bases de datos de la edición Estándar, 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, |
| Booleano | false < true |
— |
| Bytes | Orden de bytes | En las bases de datos de la edición Estándar, 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 los documentos), y las consultas consideran el valor completo. |
| 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 según IEEE 754, incluidos NaN y +/-Infinity (normalizados). |
| Punto geográfico | Por latitud, luego por longitud | Para buscar por distancia, consulta Búsqueda geoespacial. |
| 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:
|
| Null | 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 | En las bases de datos de la edición Estándar, 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 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:
- Valores nulos
- Valores booleanos
- Valores de números enteros y de punto 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 arreglos
- Embeddings de vector
- Valores de mapas
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.