Na tej stronie opisujemy typy danych obsługiwane przez Cloud Firestore.
Typy danych
W tabeli poniżej znajdziesz listę typów danych obsługiwanych przez Cloud Firestore. Opisuje też kolejność sortowania używaną podczas porównywania wartości tego samego typu:
| Typ danych | Kolejność sortowania | Uwagi | 
|---|---|---|
| Tablica | Według wartości elementu | Tablica nie może zawierać innej wartości tablicy jako jednego z elementów. W tablicy elementy zachowują przypisaną im pozycję. Podczas sortowania co najmniej 2 tablic są one porządkowane na podstawie wartości elementów. Podczas porównywania 2 tablic porównywane są pierwsze elementy każdej z nich. Jeśli pierwsze elementy są równe, porównywane są drugie elementy i tak dalej, aż do znalezienia różnicy. Jeśli w tablicy skończą się elementy do porównania, ale do tego momentu jest ona równa innej tablicy, krótsza tablica jest umieszczana przed dłuższą. Na przykład:  | 
| Wartość logiczna | false<true | – | 
| Bajty | Kolejność bajtów | Maksymalnie 1 048 487 bajtów (1 MiB – 89 bajtów). Zapytania uwzględniają tylko pierwsze 1500 bajtów. | 
| Data i godzina | Chronologicznie | Gdy jest przechowywana w Cloud Firestore, ma dokładność tylko do mikrosekund. Dodatkowa precyzja jest zaokrąglana w dół. | 
| Liczba zmiennoprzecinkowa | Dane liczbowe | 64-bitowa liczba zmiennoprzecinkowa podwójnej precyzji zgodnie ze standardem IEEE 754, w tym (znormalizowane) NaNi+/-Infinity. | 
| Punkt geograficzny | Według szerokości geograficznej, a następnie długości geograficznej | Obecnie nie zalecamy używania tego typu danych ze względu na ograniczenia dotyczące zapytań. Zwykle lepiej jest przechowywać szerokość i długość geograficzną jako osobne pola numeryczne. Jeśli Twoja aplikacja potrzebuje prostych zapytań geograficznych opartych na odległości, zapoznaj się z sekcją Zapytania geograficzne. | 
| Liczba całkowita | Dane liczbowe | 64-bitowa, ze znakiem | 
| Mapa | Według kluczy, a potem według wartości | Reprezentuje obiekt osadzony w dokumencie. Po zindeksowaniu możesz wysyłać zapytania dotyczące pól podrzędnych. Jeśli wykluczysz tę wartość z indeksowania, wszystkie pola podrzędne również zostaną wykluczone z indeksowania. 
    Kolejność kluczy jest zawsze posortowana. Jeśli na przykład wpiszesz
     Pola mapy są sortowane według klucza i porównywane według par klucz-wartość. Najpierw porównywane są klucze, a potem wartości. Jeśli pierwsze pary klucz-wartość są równe, porównywane są kolejne pary klucz-wartość itd. Jeśli 2 mapy mają te same pary klucz-wartość, brana jest pod uwagę długość mapy. Na przykład te mapy są uporządkowane rosnąco: 
     | 
| Null | Brak | – | 
| Źródła wiedzy | według elementów ścieżki (kolekcja, identyfikator dokumentu, kolekcja, identyfikator dokumentu…); | Na przykład: projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH]. | 
| Ciąg tekstowy | Kolejność bajtów zakodowanych w UTF-8 | Do 1 048 487 bajtów (1 MiB – 89 bajtów). Zapytania uwzględniają tylko pierwsze 1500 bajtów reprezentacji UTF-8. | 
| Wektor | według wymiaru, a następnie według wartości poszczególnych elementów. | Maksymalny obsługiwany wymiar osadzania to 2048. Aby przechowywać wektory o większych wymiarach, użyj redukcji wymiarowości. | 
Kolejność typów wartości
Gdy zapytanie dotyczy pola z wartościami różnych typów, Cloud Firestore używa deterministycznego porządkowania na podstawie wewnętrznych reprezentacji. Lista poniżej przedstawia kolejność:
- Wartości null
- Wartości logiczne
- Wartości całkowite i zmiennoprzecinkowe posortowane w kolejności numerycznej
- Wartości daty
- Wartości ciągu tekstowego
- Wartości bajtów
- Cloud Firestore referencje
- Wartości punktowe lokalizacji geograficznych
- Wartości tablicy
- Wektory dystrybucyjne
- Mapowanie wartości
Kolejność numeryczna
Cloud Firestore sortuje wszystkie wartości liczbowe (Integer i Floating point) na przemian. Porównanie liczb zmiennoprzecinkowych jest zgodne z całkowitym porządkiem IEEE 754, z wyjątkiem tego, że Cloud Firestore normalizuje wszystkie wartości NaN i uważa je za mniejsze niż -Infinity.