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

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

Типы данных

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

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

В базах данных Standard Edition массив не может содержать другой массив в качестве одного из своих элементов. В базах данных Enterprise массив может содержать значение массива в качестве одного из своих элементов.

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

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

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

Логическое значение false < true —
Байты Порядок байтов В базах данных Standard Edition значение не должно превышать 1 048 487 байт (1 МиБ – 89 байт), и в запросах учитываются только первые 1500 байт. В базах данных Enterprise нет ограничений на размер значения (кроме ограничений на размер документа и записи индекса), и в запросах учитывается полное значение.
Дата и время Хронологический При хранении в Cloud Firestore точность ограничивается микросекундами, а дополнительные значения округляются в меньшую сторону.
Число с плавающей запятой Численное 64-битное число двойной точности в соответствии со стандартом IEEE 754, включая (нормализованные) NaN и +/-Infinity.
Географическая точка Сначала широта, затем долгота. Чтобы выполнить поиск по расстоянию, ознакомьтесь с разделом Геопространственный поиск.
Целое число Численное 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"}

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

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

Если запрос включает поле со значениями разных типов, Cloud Firestore использует детерминированный порядок, основанный на внутреннем представлении. Ниже приведен список в порядке приоритета.

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

Числовой порядок

Cloud Firestore сортирует все числовые значения (Integer и Floating point) вперемешку. Сравнение чисел с плавающей запятой выполняется в соответствии с общим порядком IEEE 754, за исключением того, что Cloud Firestore нормализует все значения NaN и считает их меньше -Infinity.