Tipos de dados compatíveis

Esta página descreve os tipos de dados compatíveis com o Cloud Firestore.

Tipos de dados

A tabela a seguir lista os tipos de dados compatíveis com o Cloud Firestore. Também descreve a ordem de classificação usada ao comparar valores do mesmo tipo:

Tipo de dados Ordem de classificação Notas
Variedade 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 que lhes foi atribuída. Ao classificar duas ou mais matrizes, as matrizes são ordenadas com base nos valores de seus elementos.

Ao comparar duas matrizes, os primeiros elementos de cada matriz 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, [1, 2, 3] < [1, 2, 3, 1] < [2] . A matriz [2] possui o maior valor do primeiro elemento. A matriz [1, 2, 3] possui elementos iguais aos três primeiros elementos de [1, 2, 3, 1] , mas é menor em comprimento.

boleano false < true -
Bytes Ordem de bytes Até 1.048.487 bytes (1 MiB - 89 bytes). Apenas os primeiros 1.500 bytes são considerados pelas consultas.
Data e hora Cronológico Quando armazenado no Cloud Firestore, com precisão de apenas microssegundos; qualquer precisão adicional é arredondada para baixo.
Número de ponto flutuante Numérico Precisão dupla de 64 bits, IEEE 754 .
Ponto geográfico Por latitude, depois longitude No momento, não recomendamos o uso desse tipo de dados devido a limitações de consulta. Geralmente é melhor armazenar a latitude e a longitude como campos numéricos separados. Se seu aplicativo precisar de consultas geográficas simples baseadas em distância, consulte Consultas geográficas
Inteiro Numérico 64 bits, assinado
Mapa Por chaves, depois por valor

Representa um objeto incorporado em um documento. Quando indexado, você pode consultar subcampos. Se você excluir esse valor da indexação, todos os subcampos também serão excluídos da indexação.

A ordem das chaves é sempre classificada. Por exemplo, se você escrever {c: "foo", a: "bar", b: "qux"} o mapa é classificado por chave e salvo como {a: "bar", b: "qux", c: "foo"} .

Os campos do mapa são classificados por chave e comparados por pares de valores-chave, comparando primeiro as chaves e depois os valores. Se os primeiros pares de valores-chave forem iguais, os próximos pares de valores-chave serão comparados e assim por diante. Se dois mapas começarem com os mesmos pares de valores-chave, o comprimento do mapa será considerado. Por exemplo, os seguintes mapas estão em ordem crescente:

{a: "aaa", b: "baz"}
{a: "foo", b: "bar"}
{a: "foo", b: "bar", c: "qux"}
{a: "foo", b: "baz"}
{b: "aaa", c: "baz"}
{c: "aaa"}

NaN Nenhum -
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] .
Sequência de texto Ordem de bytes codificados em UTF-8 Até 1.048.487 bytes (1 MiB - 89 bytes). Apenas os primeiros 1.500 bytes da representação UTF-8 são considerados pelas consultas.

Ordenação de tipo de valor

Quando uma consulta envolve um campo com valores de tipos mistos, o Cloud Firestore usa uma ordenação determinística baseada nas representações internas. A lista a seguir mostra a ordem:

  1. Valores nulos
  2. Valores booleanos
  3. Valores NaN
  4. Valores inteiros e de ponto flutuante, classificados em ordem numérica
  5. Valores de data
  6. Valores de string de texto
  7. Valores de bytes
  8. Referências do Cloud Firestore
  9. Valores de pontos geográficos
  10. Valores de matriz
  11. Valores do mapa