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