Obsługiwane typy danych

Na tej stronie opisujemy typy danych obsługiwane przez Cloud Firestore.

Typy danych

Tabela poniżej zawiera listę typów danych obsługiwanych przez Cloud Firestore. Opisuje ona też kolejność sortowania stosowaną podczas porównywania wartości tego samego typu:

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

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

Elementy w tablicy zachowują przypisaną pozycję. Podczas sortowania 2 lub więcej tablic tablice są uporządkowane według wartości elementów.

Porównując 2 tablice, porównywane są ich pierwsze elementy. Jeśli pierwsze elementy są równe, porównywane są elementy drugie i tak dalej, aż zostanie znaleziona różnica. Jeśli tablica kończy się na elementach, które mają być porównane, ale do tego momentu są równe, krótsza tablica jest uporządkowana przed dłuższą tablicą.

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 3 pierwszym elementom tablicy [1, 2, 3, 1], ale jest krótsza.

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 W przypadku przechowywania w narzędziu Cloud Firestore dokładne dane są podawane z dokładnością tylko do mikrosekund. Dodatkowa precyzja jest zaokrąglana w dół.
Liczba zmiennoprzecinkowa Wartość liczbowa 64-bitowa podwójna precyzja, IEEE 754.
Punkt geograficzny Według szerokości, a następnie długości geograficznej Obecnie nie zalecamy używania tego typu danych ze względu na ograniczenia dotyczące zapytań. Długość i szerokość geograficzna lepiej jest zapisywać jako osobne pola liczbowe. Jeśli Twoja aplikacja potrzebuje prostych zapytań geograficznych na podstawie odległości, zapoznaj się z artykułem Zapytania geograficzne.
Liczba całkowita Wartość liczbowa 64-bitowy, podpisany
Mapa Według kluczy, a potem według wartości

Reprezentuje obiekt osadzony w dokumencie. Po zindeksowaniu możesz wysyłać zapytania dotyczące podpól. Jeśli wykluczysz tę wartość z indeksowania, wszystkie pola podrzędne również 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 zapisane jako {a: "bar", b: "qux", c: "foo"}.

Pola mapy są sortowane według klucza i porównywane za pomocą 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ść itd. Jeśli 2 mapy mają te same pary klucz-wartość, brana jest pod uwagę długość mapy. Na przykład te mapy są posortowane w kolejności rosnącej:

{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
Źródła wiedzy Według elementów ścieżki (kolekcja, identyfikator dokumentu, kolekcja, identyfikator dokumentu itd.) Na przykład: projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH].
Ciąg tekstowy kolejność bajtów kodowania UTF-8. Maksymalnie 1 048 487 bajtów (1 MiB – 89 bajtów). Zapytania uwzględniają tylko pierwsze 1500 bajtów reprezentacji w formacie UTF-8.
Wektor Według wymiaru, a następnie według poszczególnych wartości elementów Maksymalna obsługiwana liczba wymiarów wektorów to 2048. Aby przechowywać wektory o większych wymiarach, użyj redukcji wymiarów.

Uporządkowanie według typu wartości

Jeśli zapytanie dotyczy pola z wartościami różnych typów, Cloud Firestore używa deterministycznego sortowania na podstawie wewnętrznych reprezentacji. Oto 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. Cloud Firestore odwołania
  9. Wartości punktów geograficznych
  10. Wartości tablicy
  11. Wektory dystrybucyjne
  12. Wartości mapy