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

На этой странице описаны типы данных, которые поддерживает 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 байт). Запросами учитываются только первые 1 500 байт.
Дата и время Хронологический При хранении в 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"}

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

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

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

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