Firebase is back at Google I/O on May 10! Register now

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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

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

Типы данных

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

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

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

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

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

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

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

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

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