Questa pagina descrive i tipi di dati supportati da Cloud Firestore.
Tipi di dati
La tabella seguente elenca i tipi di dati supportati da Cloud Firestore. Descrive inoltre l'ordinamento utilizzato per confrontare i valori dello stesso tipo:
| Tipo di dati | Ordinamento | Note |
|---|---|---|
| Array | In base ai valori degli elementi |
Nei database Standard Edition, un array non può contenere un altro valore di array come uno dei suoi elementi. Nei database della versione Enterprise, un array può contenere un 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 di quello più lungo. Ad esempio, |
| Booleano | false < true |
— |
| Byte | Ordine dei byte | Nei database della versione Standard, il valore non deve superare 1.048.487 byte (1 MiB - 89 byte) e solo i primi 1500 byte vengono considerati dalle query. Nei database Enterprise Edition, non esiste un limite per la dimensione del valore (oltre ai limiti di dimensione delle voci di documento e indice) e l'intero valore viene considerato dalle query. |
| Data e ora | Cronologica | Se archiviati in Cloud Firestore, sono precisi solo al microsecondo; qualsiasi precisione aggiuntiva viene arrotondata per difetto. |
| Numero in virgola mobile | Numerico | Precisione doppia a 64 bit secondo lo standard IEEE 754, inclusi NaN e +/-Infinity (normalizzati). |
| Punto geografico | Per latitudine, poi longitudine | Per eseguire ricerche in base alla distanza, consulta Ricerca geospaziale. |
| Numero intero | Numerico | 64 bit, con segno |
| Mappa | Per chiavi, poi per valore | Rappresenta un oggetto incorporato in un documento. Se 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 ordinato. Ad esempio, se scrivi I campi mappa sono ordinati per chiave e confrontati per coppie chiave-valore, confrontando 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:
|
| Null | Nessuno | — |
| 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 | Nei database Standard Edition, il valore non deve superare 1.048.487 byte (1 MiB - 89 byte) e solo i primi 1500 byte vengono considerati dalle query. Nei database Enterprise Edition, non esiste un limite per la dimensione del valore (oltre ai limiti di dimensione delle voci di documento e indice) e l'intero valore viene considerato dalle query. |
| Vettoriale | Per dimensione e poi per singoli valori degli elementi | La dimensione massima supportata dell'embedding è 2048. Per archiviare 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, Cloud Firestore utilizza un ordinamento deterministico basato sulle rappresentazioni interne. Il seguente elenco mostra l'ordine:
- Valori nulli
- Valori booleani
- Valori interi e in virgola mobile, ordinati in ordine numerico
- Valori delle date
- Valori stringa di testo
- Valori dei byte
- Cloud Firestore riferimento
- Valori dei punti geografici
- Valori di array
- Vector embedding
- Valori mappa
Ordinamento numerico
Cloud Firestore ordina tutti i valori numerici (Integer e Floating point)
intervallati tra loro. Il confronto in virgola mobile segue l'ordinamento totale di IEEE 754, con la notevole eccezione che Cloud Firestore normalizza tutti i valori NaN e li considera inferiori a -Infinity.