Obsługiwane typy danych

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: [1, 2, 3] < [1, 2, 3, 1] < [2]. Tablica [2] ma największą wartość pierwszego elementu. Tablica [1, 2, 3] zawiera elementy równe pierwszym 3 elementom tablicy [1, 2, 3, 1], ale jest krótsza.

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+/-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 {c: "foo", a: "bar", b: "qux"}, mapa zostanie posortowana według klucza i zapisana jako {a: "bar", b: "qux", c: "foo"}.

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:

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

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ść:

  1. Wartości null
  2. Wartości logiczne
  3. Wartości całkowite i zmiennoprzecinkowe posortowane w kolejności numerycznej
  4. Wartości daty
  5. Wartości ciągu tekstowego
  6. Wartości bajtów
  7. Cloud Firestore referencje
  8. Wartości punktowe lokalizacji geograficznych
  9. Wartości tablicy
  10. Wektory dystrybucyjne
  11. Mapowanie wartości

Kolejność numeryczna

Cloud Firestore sortuje wszystkie wartości liczbowe (IntegerFloating 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.