Tipi di dati supportati

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

Tipi di dati

Nella tabella seguente sono elencati i tipi di dati supportati da Firestore. Descrive anche l'ordinamento utilizzato per il confronto di valori dello stesso tipo:

Tipo di dati Ordinamento Note
Array In base ai valori degli elementi

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

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

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

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

Booleano false < true
Byte Ordine byte Fino a 1.048.487 byte (1 MiB - 89 byte). Solo i primi 1500 byte vengono presi in considerazione dalle query.
Data e ora Cronologica Se archiviata in Firestore, l'accuratezza è in pochi microsecondi; l'eventuale precisione aggiuntiva viene arrotondata per difetto.
Numero con virgola mobile Numerico Precisione doppia a 64 bit, IEEE 754.
Punto geografico Per latitudine, poi longitudine Al momento sconsigliamo di utilizzare questo tipo di dati a causa di limitazioni delle query. In genere è preferibile memorizzare la latitudine e la longitudine come campi numerici separati. Se la tua app ha bisogno di semplici geoquery basate sulla distanza, consulta Query geografiche.
Numero intero Numerico 64 bit, con firma
Mappa Per chiavi, poi per valore

Rappresenta un oggetto incorporato in un documento. Una volta eseguita l'indicizzazione, puoi eseguire query sui campi secondari. Se escludi questo valore dall'indicizzazione, anche tutti i sottocampi vengono esclusi dall'indicizzazione.

L'ordinamento delle chiavi è 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 per coppie chiave-valore, prima confrontando le chiavi e poi i valori. Se le prime coppie chiave-valore sono uguali, vengono confrontate le successive coppie chiave-valore e così via. Se due mappe hanno tutte le stesse coppie chiave-valore, viene considerata la lunghezza della mappa. Ad esempio, le mappe seguenti 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"}

NaN Nessuna
Null Nessuna
Riferimento In base agli elementi del percorso (raccolta, ID documento, raccolta, ID documento...) Ad esempio, projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH].
Stringa di testo Ordine dei byte con codifica 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.
Vettoriale Per dimensione e poi per singoli valori degli elementi La dimensione di incorporamento massima supportata è 2048. Per archiviare vettori con dimensioni più grandi, utilizza la riduzione di dimensionamento.

Ordine del tipo di valore

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

  1. Valori null
  2. Valori booleani
  3. Valori NAN
  4. Valori interi e in virgola mobile, ordinati in ordine numerico
  5. Valori delle date
  6. Valori stringa di testo
  7. Valori byte
  8. Riferimenti Firestore
  9. Valori in punti geografici
  10. Valori array
  11. Incorporamenti vettoriali
  12. Mappa valori