На этой странице описаны типы данных, которые поддерживает Cloud Firestore.
Типы данных
В таблице ниже перечислены типы данных, поддерживаемые Cloud Firestore. Также описывается порядок сортировки, используемый при сравнении значений одного типа:
| Тип данных | Порядок сортировки | Примечания |
|---|---|---|
| 32-битное целое число | Численное |
32-битный, со знаком Примечание. Поддерживается только в версии Enterprise. |
| 64-битное целое число | Численное | 64-разрядное, со знаком |
| Массив | По значениям элементов |
В базах данных Standard Edition массив не может содержать другой массив в качестве одного из своих элементов. В базах данных Enterprise массив может содержать значение массива в качестве одного из своих элементов. В массиве элементы сохраняют назначенную им позицию. При сортировке двух или более массивов они упорядочиваются на основе значений их элементов. При сравнении двух массивов сравниваются их первые элементы. Если первые элементы равны, сравниваются вторые и так далее, пока не будет найдено различие. Если в массиве больше нет элементов для сравнения, но до этого момента он был равен другому массиву, то более короткий массив будет расположен перед более длинным. например |
| Логическое значение | false < true |
— |
| Временная метка BSON | Хронологический |
64-битное значение временной метки, состоящее из секунд Unix и счетчика приращения. Примечание. Поддерживается только в версии Enterprise. |
| Байты | Порядок байтов | В базах данных Standard Edition значение не должно превышать 1 048 487 байт (1 МиБ – 89 байт), и в запросах учитываются только первые 1500 байт. В базах данных Enterprise нет ограничений на размер значения (кроме ограничений на размер документа и записи индекса), и в запросах учитывается полное значение. |
| Байты с подтипом | Порядок байтов (сначала подтип, затем значение) |
Двоичная последовательность байтов с индикатором подтипа BSON. Примечание. Поддерживается только в версии Enterprise. |
| Дата и время | Хронологический | При хранении в Cloud Firestore точность ограничивается микросекундами, а дополнительные значения округляются в меньшую сторону. |
| Decimal128 | Численное |
128-битное десятичное число с плавающей запятой для высокоточных арифметических вычислений. Примечание. Поддерживается только в версии Enterprise. |
| Число с плавающей запятой | Численное | 64-битное число двойной точности в соответствии со стандартом IEEE 754, включая (нормализованные) NaN и +/-Infinity. |
| Географическая точка | Сначала широта, затем долгота. | Чтобы выполнить поиск по расстоянию, ознакомьтесь с разделом Геопространственный поиск. |
| Карта | По ключам, затем по значению | Представляет объект, встроенный в документ. После индексирования вы можете выполнять запросы по подполям. Если исключить это значение из индексирования, то все подполя также будут исключены из индексирования.
Ключи всегда сортируются. Например, если вы напишете Поля карты сортируются по ключу и сравниваются по парам "ключ-значение" (сначала сравниваются ключи, а затем значения). Если первые пары "ключ-значение" равны, сравниваются следующие пары "ключ-значение" и так далее, пока не будет найдено различие. Если у двух карт одинаковые пары "ключ-значение", то учитывается длина карты. Например, следующие карты расположены в порядке возрастания:
|
| Максимальный ключ | Нет |
Специальное значение, которое больше всех остальных значений. Примечание. Поддерживается только в версии Enterprise. |
| Минимальный ключ | Нет |
Специальное значение, которое меньше всех остальных значений (кроме null). Примечание. Поддерживается только в версии Enterprise. |
| Null | Нет | — |
| ObjectId | Порядок байтов |
12-байтовый идентификатор объекта. Примечание. Поддерживается только в версии Enterprise. |
| Справочные материалы | По элементам пути (коллекция, идентификатор документа, коллекция, идентификатор документа…). | Пример: projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH]. |
| Регулярное выражение | По шаблону, затем по параметрам |
Шаблон регулярного выражения и параметры. Примечание. Поддерживается только в версии Enterprise. |
| Текстовая строка | Порядок байтов в кодировке UTF-8 | В базах данных Standard Edition значение не должно превышать 1 048 487 байт (1 МиБ – 89 байт), и в запросах учитываются только первые 1500 байт. В базах данных Enterprise нет ограничений на размер значения (кроме ограничений на размер документа и записи индекса), и в запросах учитывается полное значение. |
| Вектор | По параметру, а затем по значениям отдельных элементов. | Максимальный поддерживаемый размер встраивания – 2048. Чтобы хранить векторы с большим количеством измерений, используйте уменьшение размерности. |
Порядок типов значений
Если запрос включает поле со значениями разных типов, Cloud Firestore использует детерминированный порядок, основанный на внутреннем представлении. Ниже приведен список в порядке приоритета.
- Нулевые значения
- Минимальное количество пар "ключ-значение" (только для версии Enterprise)
- Логические значения
- 64-битные целые числа и значения с плавающей запятой, отсортированные в числовом порядке. В базах данных версии Enterprise также поддерживаются 32-битные целые числа и значения Decimal128.
- Значения дат
- Значения текстовых строк
- Значения в байтах. В версии Enterprise также учитываются байты со значениями подтипов.
- Cloud Firestore цифровой отпечаток
- Значения ObjectId (только для версии Enterprise)
- Значения географических точек
- Регулярное выражение (только для версии Enterprise)
- Значения массива
- Векторные эмбеддинги
- Сопоставление значений
- Максимальное количество пар "ключ-значение" (только для версии Enterprise)
Числовой порядок
Cloud Firestore сортирует все числовые значения (Integer и Floating point) вперемешку. Сравнение чисел с плавающей запятой выполняется в соответствии с общим порядком IEEE 754, за исключением того, что Cloud Firestore нормализует все значения NaN и считает их меньше -Infinity.