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. Descrive anche l'ordine di ordinamento utilizzato per confrontare i 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 vengono ordinati due o più array, questi vengono ordinati in base ai valori degli elementi. Quando vengono confrontati due array, vengono confrontati i primi elementi di ciascun array. Se i primi elementi sono uguali, vengono confrontati i secondi elementi e così via finché non viene trovata una differenza. Se un array esaurisce gli elementi da confrontare, ma è uguale fino a quel punto, l'array più corto viene ordinato prima dell'array più lungo. Ad esempio, |
Booleano | false < true |
— |
Byte | Ordine dei 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 memorizzato in Firestore, è preciso solo fino ai microsecondi; qualsiasi precisione aggiuntiva viene arrotondata per difetto. |
Numero in virgola mobile | Numerico | Doppia precisione a 64 bit secondo lo standard IEEE 754, inclusi NaN e +/-Infinity (normalizzati). |
Punto geografico | Per latitudine, poi per longitudine | Al momento non consigliamo di utilizzare questo tipo di dati a causa delle limitazioni delle 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, poi per valore | Rappresenta un oggetto incorporato in un documento. Una volta indicizzati, puoi eseguire query sui sottocampi. Se escludi questo valore dall'indicizzazione, anche tutti i campi secondari vengono esclusi dall'indicizzazione.
L'ordine delle chiavi è sempre ordinato. Ad esempio, se scrivi
I campi della mappa vengono ordinati per chiave e confrontati in base alle coppie chiave-valore, prima confrontando 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 le stesse coppie chiave-valore, viene presa in considerazione la lunghezza della mappa. Ad esempio, le seguenti mappe sono in ordine crescente:
|
Null | 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 dei 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 supportata per l'incorporamento è 2048. Per memorizzare i vettori con dimensioni maggiori, utilizza la riduzione della dimensionalità. |
Ordinamento del tipo di valore
Quando una query coinvolge un campo con valori di tipi misti, Firestore utilizza un ordinamento deterministico basato sulle rappresentazioni interne. Il seguente elenco mostra l'ordine:
- Valori null
- Valori booleani
- Valori interi e in virgola mobile, ordinati in ordine numerico
- Valori di data
- Valori delle stringhe di testo
- Valori byte
- Riferimenti a Firestore
- Valori in punti geografici
- Valori di array
- Vector embedding
- Valori mappa
Ordinamento numerico
Firestore ordina tutti i valori numerici (Integer
e Floating point
)
interlacciati tra loro. Il confronto in virgola mobile segue l'ordinamento
totale di IEEE 754 con l'eccezione
notevole che Firestore normalizza tutti i valori NaN
e
li considera inferiori a -Infinity
.