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
Inteiro de 32-bit. Numérico

32 bits, assinado.

Observação:compatível apenas com a edição Enterprise.

Inteiro de 64 bits Numérico 64 bits, assinado.
Matriz Por valores de elemento

Em bancos de dados da edição Standard, uma matriz não pode conter outro valor de matriz como um de seus elementos. Nos bancos de dados da edição Enterprise, uma matriz pode conter um valor de matriz como um dos 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, [1, 2, 3] < [1, 2, 3, 1] < [2]. A matriz [2] tem o maior valor do primeiro elemento. A matriz [1, 2, 3] tem elementos iguais aos três primeiros elementos de [1, 2, 3, 1], mas é menor em comprimento.

Booleano false < true —
Carimbo de data/hora BSON Cronológica

Um valor de carimbo de data/hora de 64 bits que inclui segundos Unix e um contador de incremento.

Observação:compatível apenas com a edição Enterprise.

Bytes Ordem de bytes Nos bancos de dados da edição Standard, o valor não pode exceder 1.048.487 bytes (1 MiB - 89 bytes), e somente os primeiros 1.500 bytes são considerados pelas consultas. Nos bancos de dados da edição Enterprise, não há limite para o tamanho do valor (exceto os limites de tamanho de documentos e entradas de índice), e o valor total é considerado pelas consultas.
Bytes com subtipo Ordem de bytes (subtipo e valor)

Sequência de bytes binários com um indicador de subtipo BSON.

Observação:compatível apenas com a edição Enterprise.

Data e hora Cronológica Quando armazenados no Firestore, têm precisão apenas para microssegundos. Qualquer precisão adicional é arredondada para baixo.
Decimal128 Numérico

Número de ponto flutuante decimal de 128 bits para aritmética de alta precisão.

Observação:compatível apenas com a edição Enterprise.

Número de ponto flutuante Numérico Precisão dupla de 64 bits de acordo com o IEEE 754, incluindo NaN e +/-Infinity (normalizados).
Ponto geográfico Por latitude e depois longitude Para pesquisar com base na distância, consulte Pesquisa geoespacial.
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 {c: "foo", a: "bar", b: "qux"}, por exemplo, 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 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 até que uma diferença seja encontrada. 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:

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

Chave máx. Nenhum

Valor especial que é maior do que todos os outros valores.

Observação:disponível apenas na edição Enterprise.

Chave mínima Nenhum

Valor especial que é menor do que todos os outros valores (exceto nulo).

Observação:disponível apenas na edição Enterprise.

Nulo Nenhum —
ObjectId Ordem de bytes

Um identificador de objeto de 12 bytes.

Observação:compatível apenas com a edição Enterprise.

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].
Expressão regular Por padrão e, em seguida, por opções

Um padrão de expressão regular e opções.

Observação:compatível apenas com a edição Enterprise.

String de texto Ordem de bytes codificada em UTF-8 Nos bancos de dados da edição Standard, o valor não pode exceder 1.048.487 bytes (1 MiB - 89 bytes), e somente os primeiros 1.500 bytes são considerados pelas consultas. Nos bancos de dados da edição Enterprise, não há limite para o tamanho do valor (exceto os limites de tamanho de documentos e entradas de índice), e o valor total é considerado pelas consultas.
Vetor Por dimensão e depois por valores de elementos individuais A dimensão de incorporação máxima compatível é 2048. Para armazenar vetores com dimensões maiores, use 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:

  1. Valores nulos
  2. Valores de chave mínimos (somente na edição Enterprise)
  3. Valores booleanos
  4. Valores de inteiros e ponto flutuante de 64 bits, classificados em ordem numérica. Nos bancos de dados da edição Enterprise, valores inteiros de 32 bits e Decimal128 também são incluídos.
  5. Valores de data
  6. Valores de string de texto
  7. Valores de byte. Na edição Enterprise, os bytes com valores de subtipo também são incluídos.
  8. Referências do Firestore
  9. Valores de ObjectId (somente na edição Enterprise)
  10. Valores de ponto geográfico
  11. Expressão regular (somente na edição Enterprise)
  12. Valores de matriz
  13. Embeddings de vetor
  14. Valores de mapa
  15. Chaves-valor máximas (somente na edição Enterprise)

Ordenação numérica

O Firestore classifica todos os valores numéricos (Integer e Floating point) entrelaçados. A comparação de ponto flutuante segue a ordenação total do IEEE 754, com a exceção notable de que o Firestore normaliza todos os valores de NaN e os considera menores que -Infinity.