Tipos de dados suportados
Esta página descreve os tipos de dados que o Firestore suporta.
Tipos de dados
A tabela seguinte apresenta os tipos de dados suportados pelo Firestore. Também descreve a ordem de ordenação usada quando se comparam valores do mesmo tipo:
Tipo de dados | Ordenação | Notas |
---|---|---|
Matriz | Por valores dos elementos |
Uma matriz não pode conter outro valor de matriz como um dos seus elementos. Numa matriz, os elementos mantêm a posição que lhes foi atribuída. Quando ordena duas ou mais matrizes, as matrizes são ordenadas com base nos valores dos respetivos elementos. Quando compara duas matrizes, os primeiros elementos de cada matriz são comparados. Se os primeiros elementos forem iguais, os segundos elementos são comparados e assim sucessivamente até ser encontrada uma diferença. Se uma matriz ficar sem elementos para comparar, mas for igual até esse ponto, a matriz mais curta é ordenada antes da matriz mais longa. Por exemplo, |
Booleano | false < true |
— |
Bytes | Ordem dos bytes | Até 1 048 487 bytes (1 MiB - 89 bytes). As consultas só consideram os primeiros 1500 bytes. |
Data e hora | Cronológico | Quando armazenado no Firestore, é preciso apenas até microssegundos. Qualquer precisão adicional é arredondada para baixo. |
Número de vírgula flutuante | Numérico | Precisão dupla de 64 bits de acordo com a norma IEEE 754, incluindo (normalizada) NaN e +/-Infinity . |
Ponto geográfico | Por latitude e, em seguida, por longitude | Neste momento, não recomendamos a utilização deste tipo de dados devido a limitações de consultas. Geralmente, é melhor armazenar a latitude e a longitude como campos numéricos separados. Se a sua app precisar de geoconsultas simples baseadas na distância, consulte o artigo Geoconsultas |
Número inteiro | Numérico | 64 bits, assinado |
Mapa | Por chaves e, em seguida, por valor | Representa um objeto incorporado num documento. Quando indexados, pode consultar subcampos. Se excluir este valor da indexação, todos os subcampos também são excluídos da indexação.
A ordenação das chaves é sempre feita. Por exemplo, se escrever
Os campos de mapa são ordenados por chave e comparados por pares de chave-valor, comparando primeiro as chaves e, em seguida, os valores. Se os primeiros pares de chave-valor forem iguais, os pares de chave-valor seguintes são comparados e assim sucessivamente. Se dois mapas tiverem todos os mesmos pares de chave-valor, é considerada a duração do mapa. Por exemplo, os seguintes mapas estão por ordem ascendente:
|
Nulo | Nenhum | — |
Referência | Por elementos do caminho (coleção, ID do documento, coleção, ID do documento...) | Por exemplo,
projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH] . |
String de texto | Ordem dos bytes codificada em UTF-8 | Até 1 048 487 bytes (1 MiB - 89 bytes). As consultas só consideram os primeiros 1500 bytes da representação UTF-8. |
Vetor | Por dimensão e, em seguida, por valores de elementos individuais | A dimensão máxima de incorporação suportada é 2048. Para armazenar vetores com dimensões maiores, use a redução da dimensionalidade. |
Ordenação do tipo de valor
Quando uma consulta envolve um campo com valores de tipos mistos, o Firestore usa uma ordenação determinística com base nas representações internas. A seguinte lista mostra a ordem:
- Valores nulos
- Valores booleanos
- Valores inteiros e de vírgula flutuante, ordenados por ordem numérica
- Valores de data
- Valores de strings de texto
- Valores de bytes
- Referências do Firestore
- Valores de pontos geográficos
- Valores de matriz
- Incorporações de vetores
- Mapeie valores
Ordenação numérica
O Firestore ordena todos os valores numéricos (Integer
e Floating point
) intercalados entre si. A comparação de pontos flutuantes segue a ordenação
total da norma IEEE 754, com a exceção
notável de que o Firestore normaliza todos os valores NaN
e
considera-os inferiores a -Infinity
.