На этой странице описаны типы данных, которые поддерживает 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.