Na tej stronie opisujemy typy danych obsługiwane przez Cloud Firestore.
Typy danych
W tabeli poniżej znajdziesz typy danych obsługiwane 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 elementów |
W bazach danych w wersji Standard tablica nie może zawierać innej wartości tablicy jako jednego z elementów. W bazach danych w wersji Enterprise tablica może zawierać wartość tablicy jako jeden z elementów. W tablicy elementy zachowują przypisaną im pozycję. Podczas sortowania co najmniej 2 tablic są one porządkowane na podstawie wartości ich elementów. Podczas porównywania 2 tablic porównywane są ich pierwsze elementy. 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, krótsza tablica jest porządkowana przed dłuższą. Na przykład: |
| Wartość logiczna | false < true |
– |
| Bajty | Kolejność bajtów | W bazach danych w wersji Standard wartość nie może przekraczać 1 048 487 bajtów (1 MiB – 89 bajtów), a zapytania uwzględniają tylko pierwsze 1500 bajtów. W bazach danych w wersji Enterprise nie ma limitu rozmiaru wartości (poza limitami rozmiaru dokumentu i wpisu indeksu), a zapytania uwzględniają pełną wartość. |
| Data i godzina | Chronologicznie | W przypadku przechowywania w Cloud Firestore dokładność jest ograniczona do mikrosekund. Dodatkowa precyzja jest zaokrąglana w dół. |
| Liczba zmiennoprzecinkowa | Dane liczbowe | 64-bitowa podwójna precyzja zgodnie ze standardem IEEE 754, w tym (znormalizowane) NaN i +/-Infinity. |
| Punkt geograficzny | Według szerokości, a następnie długości geograficznej | Aby wyszukiwać na podstawie odległości, zapoznaj się z artykułem Wyszukiwanie geoprzestrzenne. |
| Liczba całkowita | Dane liczbowe | 64-bitowa, ze znakiem |
| Mapa | Według kluczy, a następnie według wartości | Reprezentuje obiekt umieszczony w dokumencie. Po zindeksowaniu możesz wysyłać zapytania dotyczące pól podrzędnych. Jeśli wykluczysz tę wartość z indeksowania, wszystkie podpola również zostaną wykluczone z indeksowania.
Klucze są zawsze sortowane. Jeśli na przykład wpiszesz Pola mapy są sortowane według klucza i porównywane według par klucz-wartość, najpierw klucze, a następnie wartości. Jeśli pierwsze pary klucz-wartość są równe, porównywane są kolejne pary klucz-wartość itd. Jeśli 2 mapy mają takie 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 formacie UTF-8 | W bazach danych w wersji Standard wartość nie może przekraczać 1 048 487 bajtów (1 MiB – 89 bajtów), a zapytania uwzględniają tylko pierwsze 1500 bajtów. W bazach danych w wersji Enterprise nie ma limitu rozmiaru wartości (poza limitami rozmiaru dokumentu i wpisu indeksu), a zapytania uwzględniają pełną wartość. |
| 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
- Liczby całkowite i wartości zmiennoprzecinkowe posortowane w porządku numerycznym.
- Wartości daty
- Wartości ciągów tekstowych
- Wartości bajtów
- Cloud Firestore odniesienie
- Wartości punktów geograficznych
- Wartości tablicy
- Wektory dystrybucyjne
- Wartości mapy
Kolejność numeryczna
Cloud Firestore sortuje wszystkie wartości liczbowe (Integer i Floating point) przeplatane ze sobą. 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 uznaje je za mniejsze niż -Infinity.