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

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

Типы данных

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

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

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

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

When comparing two arrays, the first elements of each array are compared. If the first elements are equal, then the second elements are compared and so on until a difference is found. If an array runs out of elements to compare but is equal up to that point, then the shorter array is ordered before the longer array.

For example, [1, 2, 3] < [1, 2, 3, 1] < [2] . The array [2] has the greatest first element value. The array [1, 2, 3] has elements equal to the first three elements of [1, 2, 3, 1] but is shorter in length.

Логический false < true
Байты Порядок байтов До 1 048 487 байт (1 МиБ - 89 байт). Запросы рассматривают только первые 1500 байт.
Дата и время Хронологический При хранении в Cloud Firestore точность определяется с точностью до микросекунд; любая дополнительная точность округляется в меньшую сторону.
Число с плавающей запятой Числовой 64-битная двойная точность в соответствии со стандартом IEEE 754 , включая (нормализованные) NaN и +/-Infinity .
Географическая точка Сначала по широте, затем по долготе. Для поиска по расстоянию см. раздел «Геопространственный поиск» .
Целое число Числовой 64-битный, подписанный
Карта Сначала по ключам, затем по значению.

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

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

Map fields are sorted by key and compared by key-value pairs, first comparing the keys and then the values. If the first key-value pairs are equal, the next key-value pairs are compared, and so on. If two maps have all of the same key-value pairs, then map length is considered. For example, the following maps are in ascending order:

{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. Целочисленные и числа с плавающей запятой, отсортированные в числовом порядке.
  4. Значения дат
  5. Значения текстовых строк
  6. Значения байтов
  7. Ссылки Cloud Firestore
  8. Географические точечные значения
  9. Значения массива
  10. Векторные вложения
  11. Значения карты

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

Cloud Firestore sorts all numeric values ( Integer & Floating point ) interleaved with each other. Floating point comparison follows the total ordering of IEEE 754 with the notable exception being that Cloud Firestore normalizes all NaN values, and considers it less than -Infinity .