Tipi di dati supportati

Questa pagina descrive i tipi di dati supportati da Firestore.

Tipi di dati

La seguente tabella elenca i tipi di dati supportati da Firestore. Inoltre, descrive l'ordine di ordinamento utilizzato per confrontare valori dello stesso tipo:

Tipo di dati Ordinamento Note
Array Per valori elemento

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 assegnata. Quando ordini due o più array, questi vengono ordinati in base ai valori dei relativi elementi.

Quando si confrontano due array, vengono confrontati i primi elementi di ciascun array. Se i primi elementi sono uguali, vengono confrontati i secondi elementi e così via fino a quando non viene trovata 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ù elevato. La matrice [1, 2, 3] ha elementi uguali ai primi tre elementi di [1, 2, 3, 1], ma è più breve.

Booleano false < true
Byte Ordine dei byte Fino a 1.048.487 byte (1 MiB - 89 byte). Solo i primi 1500 byte vengono considerati dalle query.
Data e ora Cronologica Se archiviati in Firestore, sono precisi solo ai microsecondi; qualsiasi precisione aggiuntiva viene arrotondata per difetto.
Numero in virgola mobile Numerico Precisione doppia a 64 bit, IEEE 754.
Punto geografico Per latitudine e poi per longitudine Al momento sconsigliamo di utilizzare questo tipo di dati a causa di limitazioni nelle query. In genere è meglio memorizzare la latitudine e la longitudine come campi numerici separati. Se la tua app ha bisogno di semplici query geografiche basate sulla distanza, consulta Query geografiche
Numero intero Numerico 64 bit, firmato
Mappa Per chiavi, quindi per valore

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

L'ordinamento delle chiavi è sempre in ordine. 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 mappa vengono ordinati per chiave e confrontati in base a coppie chiave-valore, prima le chiavi e poi i valori. Se le prime coppie chiave-valore sono uguali, vengono confrontate le coppie chiave-valore successive e così via. Se due mappe hanno tutte 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"}

NaN Nessuno
Null Nessuno
Riferimento Per elementi del percorso (raccolta, ID documento, raccolta, ID documento e così via) Ad esempio, projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH].
Stringa di testo Ordine di byte codificato UTF-8 Fino a 1.048.487 byte (1 MiB - 89 byte). Le query prendono in considerazione solo i primi 1500 byte della rappresentazione UTF-8.
Vettoriale Per dimensione e poi per valori dei singoli elementi La dimensione massima dell'embedding supportata è 2048. Per memorizzare vettori con dimensioni maggiori, utilizza la riduzione della dimensionalità.

Ordinamento dei tipi di valore

Quando una query coinvolge un campo con valori di tipi misti, Firestore utilizza un ordinamento deterministico in base alle rappresentazioni interne. L'elenco seguente mostra l'ordine:

  1. Valori null
  2. Valori booleani
  3. Valori NaN
  4. Valori interi e con virgola mobile, ordinati in ordine numerico
  5. Valori data
  6. Valori di stringhe di testo
  7. Valori in byte
  8. Riferimenti a Firestore
  9. Valori in punti geografici
  10. Valori di array
  11. Incorporamenti vettoriali
  12. Valori mappa