Obsługiwane typy danych

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 on też kolejność sortowania stosowana przy porównywaniu wartości tego samego typu:

Typ danych Kolejność sortowania Notatki
Tablica Według wartości elementów

Tablica nie może zawierać innej wartości tablicy jako jednego z jej elementów.

Elementy w tablicy zachowują przypisaną do nich pozycję. Podczas sortowania co najmniej 2 tablic tablice są uporządkowane według wartości elementów.

Gdy porównujesz 2 tablice, porównywane są pierwsze elementy każdej z nich. Jeśli pierwsze elementy są równe, drugie są porównywane i tak dalej, aż znajdzie się różnica. Jeśli w tablicy brakuje elementów do porównania, ale jest ona równa do tego momentu, krótsza tablica jest uporządkowana przed dłuższą.

Na przykład: [1, 2, 3] < [1, 2, 3, 1] < [2]. Tablica [2] ma najwyższą wartość pierwszego elementu. Tablica [1, 2, 3] zawiera elementy równe 3 pierwszym elementom [1, 2, 3, 1], ale jest krótsza.

Wartość logiczna false < true
Bajty Kolejność bajtów Maks. 1 048 487 bajtów (1 MiB–89 bajtów). Zapytania uwzględniają tylko pierwsze 1500 bajtów.
Data i godzina Chronologicznie W przypadku przechowywania w Cloud Firestore można to robić precyzyjnie tylko w mikrosekundach. Dodatkowa precyzja jest zaokrąglana w dół.
Liczba zmiennoprzecinkowa Wartość liczbowa Podwójna precyzja 64-bitowa, IEEE 754.
Punkt geograficzny Według szerokości, a następnie długości geograficznej W tej chwili nie zalecamy korzystania z tego typu danych ze względu na ograniczenia zapytań. Długość i szerokość geograficzna lepiej jest zapisywać jako osobne pola liczbowe. Jeśli Twoja aplikacja wymaga prostych zapytań geograficznych opartych na odległości, zapoznaj się z sekcją Zapytania geograficzne.
Liczba całkowita Wartość liczbowa 64-bitowy, podpisany
Mapa według kluczy, a potem według wartości

Reprezentuje obiekt umieszczony w dokumencie. Po zindeksowaniu możesz wysyłać zapytania o pola podrzędne. Jeśli wykluczysz tę wartość z indeksowania, wszystkie pola podrzędne też zostaną wykluczone z indeksowania.

Kolejność kluczy jest zawsze sortowana. Jeśli na przykład wpiszesz {c: "foo", a: "bar", b: "qux"}, mapa zostanie posortowana według klucza i zapisana jako {a: "bar", b: "qux", c: "foo"}.

Pola mapowania są sortowane według klucza i porównywane według par klucz-wartość, najpierw porównując klucze, a potem wartości. Jeśli pierwsze pary klucz-wartość są równe, porównywane są kolejne pary klucz-wartość i tak dalej. Jeśli 2 mapy zawierają wszystkie takie same pary klucz-wartość, brana jest pod uwagę długość mapy. Na przykład te mapy są uporządkowane rosnąco:

{a: "aaa", b: "baz"}
{a: "foo", b: "bar"}
{a: "foo", b: "bar", c: "qux"}
{a: "foo", b: "baz"}
{b: "aaa", c: "baz"}
{c: "aaa"}

NaN Brak
Null Brak
Dokumentacja Według elementów ścieżki (kolekcja, identyfikator dokumentu, kolekcja, identyfikator dokumentu...) Przykład: projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH].
Ciąg tekstowy Kolejność bajtów zakodowana w UTF-8 Maks. 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 poszczególnych wartości elementów Maksymalny obsługiwany wymiar wektora dystrybucyjnego to 2048. Aby przechowywać wektory o większych wymiarach, użyj redukcji wymiarów.

Sortowanie typów wartości

Gdy zapytanie obejmuje pole z wartościami różnych typów, Cloud Firestore stosuje deterministyczne sortowanie na podstawie wewnętrznych reprezentacji. Oto ich kolejność:

  1. Wartości null
  2. Wartości logiczne
  3. Wartości NaN
  4. Wartości całkowite i zmiennoprzecinkowe posortowane w kolejności liczbowej
  5. Wartości dat
  6. Wartości ciągu tekstowego
  7. Wartości w bajtach
  8. Dokumentacja Cloud Firestore
  9. Geograficzne wartości punktowe
  10. Wartości tablicy
  11. Wektory dystrybucyjne wektorów
  12. Mapuj wartości