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 drugiej tablicy, krótsza tablica jest umieszczana przed dłuższą. Na przykład: |
Wartość logiczna | false < true |
– |
Bajty | Kolejność bajtów | Do 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) NaN i +/-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 dwie 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 wektora dystrybucyjnego 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
.