Поддерживаемые типы данных

На этой странице описаны типы данных, которые поддерживает Cloud Firestore .

Типы данных

В следующей таблице перечислены типы данных, поддерживаемые Cloud Firestore . Он также описывает порядок сортировки, используемый при сравнении значений одного типа:

Тип данных Порядок сортировки Примечания
Множество По значениям элементов

Массив не может содержать другое значение массива в качестве одного из своих элементов.

Внутри массива элементы сохраняют назначенную им позицию. При сортировке двух или более массивов массивы упорядочиваются на основе значений их элементов.

При сравнении двух массивов сравниваются первые элементы каждого массива. Если первые элементы равны, то сравниваются вторые элементы и так далее, пока не будет найдена разница. Если в массиве закончились элементы для сравнения, но до этого момента они равны, то более короткий массив упорядочивается перед более длинным массивом.

Например, [1, 2, 3] < [1, 2, 3, 1] < [2] . Массив [2] имеет наибольшее значение первого элемента. Массив [1, 2, 3] содержит элементы, равные первым трем элементам массива [1, 2, 3, 1] , но короче по длине.

логическое значение false < true
Байты Порядок байтов До 1 048 487 байт (1 МиБ — 89 байт). При запросах учитываются только первые 1500 байт.
Дата и время хронологический При хранении в Cloud Firestore с точностью до микросекунд; любая дополнительная точность округляется в меньшую сторону.
Число с плавающей запятой Числовой 64-битная двойная точность, IEEE 754 .
Географическая точка По широте, затем по долготе В настоящее время мы не рекомендуем использовать этот тип данных из-за ограничений запросов. Обычно лучше хранить широту и долготу в виде отдельных числовых полей. Если вашему приложению нужны простые геозапросы на основе расстояния, см. раздел Геозапросы.
Целое число Числовой 64-битная, подписанная
Карта По ключам, затем по значению

Представляет объект, встроенный в документ. При индексировании вы можете запрашивать подполя. Если исключить это значение из индексации, то из индексации исключаются и все подполя.

Порядок ключей всегда сортируется. Например, если вы напишете {c: "foo", a: "bar", b: "qux"} карта сортируется по ключу и сохраняется как {a: "bar", b: "qux", c: "foo"} .

Поля карты сортируются по ключу и сравниваются по парам «ключ-значение», сначала сравниваются ключи, а затем значения. Если первые пары «ключ-значение» равны, сравниваются следующие пары «ключ-значение» и так далее. Если две карты имеют одинаковые пары ключ-значение, учитывается длина карты. Например, следующие карты расположены в порядке возрастания:

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

НЭН Никто
Нулевой Никто
Ссылка По элементам пути (коллекция, идентификатор документа, коллекция, идентификатор документа...) Например, projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH] .
Текстовая строка Порядок байтов в кодировке UTF-8 До 1 048 487 байт (1 МиБ — 89 байт). При запросах учитываются только первые 1500 байт представления UTF-8.
Вектор По размерности, а затем по значениям отдельных элементов Максимальный поддерживаемый размер внедрения — 2048. Чтобы хранить векторы с большими размерами, используйте уменьшение размерности .

Порядок типов значений

Когда запрос включает поле со значениями смешанных типов, Cloud Firestore использует детерминированный порядок, основанный на внутренних представлениях. В следующем списке показан порядок:

  1. Нулевые значения
  2. Логические значения
  3. значения NaN
  4. Целые числа и значения с плавающей запятой, отсортированные в числовом порядке.
  5. Значения даты
  6. Значения текстовой строки
  7. Байтовые значения
  8. Ссылки Cloud Firestore
  9. Значения географических точек
  10. Значения массива
  11. Векторные вложения
  12. Значения карты