Tipi di dati supportati

In questa pagina vengono descritti i tipi di dati supportati da Firestore.

Tipi di dati

La tabella riportata di seguito elenca i tipi di dati supportati da Firestore. Descrive inoltre l'ordinamento utilizzato per il confronto dei valori dello stesso tipo:

Tipo di dati Ordinamento Note
Array Per valori di elementi

Un array non può contenere un altro valore dell'array come uno dei suoi elementi.

All'interno di un array, gli elementi mantengono la posizione assegnata loro. Quando ordini due o più array, questi vengono ordinati in base ai valori degli elementi.

Quando confronti due array, vengono confrontati i primi elementi di ciascun array. Se i primi elementi sono uguali, i secondi vengono confrontati e così via fino a quando non viene trovata una differenza. Se un array esaurisce gli elementi da confrontare, ma è uguale a quel punto, l'array più corto viene ordinato prima dell'array più lungo.

Ad esempio, [1, 2, 3] < [1, 2, 3, 1] < [2]. L'array [2] ha il valore più alto del primo elemento. L'array [1, 2, 3] contiene elementi uguali ai primi tre elementi di [1, 2, 3, 1], ma ha una lunghezza inferiore.

Booleano false < true
Byte Ordine byte Fino a 1.048.487 byte (1 MiB - 89 byte). Solo i primi 1500 byte vengono considerati dalle query.
Data e ora Cronologico Se archiviato in Firestore, il livello preciso è costituito solo da microsecondi; qualsiasi precisione aggiuntiva viene arrotondata per difetto.
Numero in virgola mobile Numerico Doppia precisione a 64 bit, IEEE 754.
Punto geografico Per latitudine e longitudine Al momento sconsigliamo di utilizzare questo tipo di dati a causa di limitazioni delle query. In genere, è preferibile archiviare la latitudine e la longitudine come campi numerici separati. Se la tua app richiede semplici query geografiche basate sulla distanza, consulta la sezione Query geografiche.
Numero intero Numerico Firma a 64 bit
Mappa Per chiavi, poi per valore

Rappresenta un oggetto incorporato in un documento. Quando sono indicizzati, puoi eseguire query sui sottocampi. Se escludi questo valore dall'indicizzazione, anche tutti i sottocampi vengono esclusi dall'indicizzazione.

L'ordinamento delle chiavi viene sempre ordinato. Ad esempio, se scrivi {c: "foo", a: "bar", b: "qux"}, la mappa viene ordinata per chiave e salvata come {a: "bar", b: "qux", c: "foo"}.

I campi della mappa vengono ordinati per chiave e confrontati in base a coppie chiave-valore, confrontando prima le chiavi e poi i valori. Se le prime coppie chiave-valore sono uguali, quelle successive vengono confrontate e così via. Se due mappe iniziano con le stesse coppie chiave-valore, viene considerata la lunghezza della mappa. Ad esempio, le seguenti mappe sono in ordine 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"}

Nullo Nessuno
Riferimento Per elementi del percorso (raccolta, ID documento, raccolta, ID documento...) Ad esempio, projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH].
Stringa di testo Ordine di byte codificato in UTF-8 Fino a 1.048.487 byte (1 MiB - 89 byte). Solo i primi 1500 byte della rappresentazione UTF-8 vengono considerati dalle query.

Ordinamento per tipo di valore

Quando una query riguarda un campo con valori di tipo misto, Firestore utilizza un ordinamento deterministico basato sulle rappresentazioni interne. L'elenco seguente mostra l'ordine:

  1. Valori nulli
  2. Valori booleani
  3. Valori interi e in virgola mobile, ordinati in ordine numerico
  4. Valori data
  5. Valori stringa di testo
  6. Valori di byte
  7. Riferimenti Firestore
  8. Valori in punti geografici
  9. Valori array
  10. Valori mappa