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, |
| 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 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:
|
| 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:
- Valores nulos
- Valores de clave mínimos (solo para la edición Enterprise)
- Valores booleanos
- 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.
- Valores de fechas
- Valores de strings de texto
- Valores de bytes. En la edición Enterprise, también se incluyen los bytes con valores de subtipo.
- Referencias de Firestore
- Valores de ObjectId (solo en la edición Enterprise)
- Valores de puntos geográficos
- Expresión regular (solo en la edición Enterprise)
- Valores de arreglos
- Embeddings de vector
- Valores de mapas
- 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.