Tipos de dados compatíveis
Veja nesta página os tipos de dados compatíveis com o Firestore.
Tipos de dados
A tabela a seguir lista os tipos de dados compatíveis com o Firestore. Também descreve a ordem de classificação usada ao comparar valores do mesmo tipo:
Tipo de dados | Ordem de classificação | Observações |
---|---|---|
Matriz | Por valores de elemento |
Uma matriz não pode conter outro valor de matriz como um de seus elementos. Dentro de uma matriz, os elementos mantêm a posição atribuída a eles. Ao classificar duas ou mais matrizes, elas são ordenadas com base nos seus valores de elemento.
Ao comparar duas matrizes, os primeiros elementos de cada uma delas são comparados. Se os primeiros elementos forem iguais, os segundos elementos serão comparados, e assim por diante, até que uma diferença seja encontrada. Se uma matriz ficar sem elementos para comparar, mas for igual até esse ponto, a matriz mais curta será ordenada antes da matriz mais longa. Por exemplo, |
Booleano | false < true |
— |
Bytes | Ordem de bytes | Até 1.048.487 bytes (1 MiB — 89 bytes). Somente os primeiros 1.500 bytes são considerados nas consultas. |
Data e hora | Cronológica | Quando armazenados no Firestore, têm precisão apenas para microssegundos. Qualquer precisão adicional é arredondada para baixo. |
Número de ponto flutuante | Numérica | Precisão dupla de 64 bits, IEEE 754. |
Ponto geográfico | Por latitude e depois longitude | No momento, não recomendamos usar esse tipo de dados devido às limitações da consulta. Geralmente, é preferível armazenar a latitude e a longitude como campos numéricos separados. Se o app precisa de consultas geográficas com base na distância, consulte Consultas geográficas. |
Inteiro | Numérica | 64 bits, assinado. |
Mapa | Por chaves e, em seguida, por valor | Representa um objeto incorporado em um documento. Quando indexado, é possível consultar subcampos. Se você excluir esse valor da indexação, todos os subcampos também serão excluídos.
A ordenação das chaves é sempre classificada. Se você gravar Os campos do mapa são classificados por chave e comparados por pares de chave-valor, primeiro comparando as chaves e, em seguida, os valores. Se os primeiros pares de chave-valor forem iguais, os próximos pares serão comparados e assim por diante. Se dois mapas tiverem todos os mesmos pares de chave-valor, o tamanho será considerado. Por exemplo, os mapas a seguir estão em ordem crescente:
|
NaN | Nenhuma | — |
Nulo | Nenhuma | — |
Referência | Por elementos do caminho (coleção, código do documento, coleção, código do documento…) | Por exemplo, projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH] . |
String de texto | Ordem de bytes codificada em UTF-8 | Até 1.048.487 bytes (1 MiB — 89 bytes). Somente os primeiros 1.500 bytes da representação UTF-8 são considerados nas consultas. |
Vetor | Por dimensão e depois por valores de elementos individuais | A dimensão de incorporação máxima aceita é 2048. Para armazenar vetores com dimensões maiores, use a redução de dimensionalidade. |
Ordem de tipo de valor
Quando uma consulta envolve um campo com valores de tipos mistos, o Firestore usa uma ordem determinista com base nas representações internas. Veja a ordem na lista a seguir:
- Valores nulos
- Valores booleanos
- Valores NaN
- Valores de inteiros e ponto flutuante, classificados em ordem numérica
- Valores de data
- Valores de string de texto
- Valores de byte
- Referências do Firestore
- Valores de ponto geográfico
- Valores de matriz
- Embeddings vetoriais
- Valores de mapa