| Это относится только к версии Cloud Firestore Enterprise. |
На этой странице описаны различия в поведении Cloud Firestore с совместимостью с MongoDB и самой MongoDB.
Подробную информацию о поддерживаемых функциях в зависимости от версии MongoDB см. в следующем разделе:
- Поддерживаемые функции: 8.0
- Поддерживаемые функции: 7.0
- Поддерживаемые функции: 6.0
- Поддерживаемые функции: 5.0
Связи и базы данных
- Каждое соединение ограничено одной базой данных Cloud Firestore, совместимой с MongoDB.
- Перед подключением к ней необходимо создать базу данных.
Название
Следующие различия касаются именования частей вашей модели данных.
Коллекции
- Имена коллекций, соответствующие формату
__.*__не поддерживаются.
Поля
- Имена полей, соответствующие формату
__.*__не поддерживаются. - Пустые имена полей не поддерживаются.
Документы
- Максимальный размер документа составляет 4 МиБ.
- Максимальная глубина вложенности полей составляет 20. Каждое поле типа Array или Object добавляет один уровень к общей глубине.
_id
- Поле верхнего уровня
_idдолжно иметь тип ObjectId, String, 64-битное целое число, 32-битное целое число, Double, Binary или Object. Другие типы BSON не поддерживаются.
Ценности
- Типы BSON JavaScript, Symbol, DBPointer и Undefined не поддерживаются.
Дата
- Значения дат должны попадать в диапазон
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z].
Десятичная дробь 128
- Значения
NaN, положительной бесконечности и отрицательной бесконечности канонизируются при записи. - Арифметические операции над числом Decimal128 не поддерживаются.
Двойной
- Значения
NaNканонизируются при записи.
Регулярное выражение
- Параметры регулярных выражений должны быть допустимыми ("i", "m", "s", "u" или "x") и указаны в алфавитном порядке без повторов.
Запросы
- Естественный порядок сортировки (запросы без явной сортировки) не соответствует порядку вставки или сортировке по
_idпо возрастанию.
Агрегации
- Количество этапов агрегации ограничено 250.
- Этапы
$mergeи$outне поддерживаются. Полный список поддерживаемых этапов и операторов см. в разделе команд . - Этап
$lookupне поддерживает поляletиpipeline. - Этап
$facetне поддерживает$randна этапах ввода, поскольку это выражение с переменной типа volatile.
Пишет
- Документы, имена которых начинаются со знака доллара ("$"), нельзя создать с помощью функции обновления/вставки (upserver) в
updateилиfindAndModify. - Убедитесь, что в вашей строке подключения указано
retryWrites=false(или используйте метод, соответствующий вашему драйверу), чтобы драйвер не пытался использовать эту функцию. Повторные попытки записи не поддерживаются.
Транзакции
Поддерживается изоляция моментальных снимков и сериализуемые транзакции.
По умолчанию транзакции используют оптимистичный контроль параллельного доступа с изоляцией снимков.
Прочитайте проблему
Cloud Firestore с поддержкой MongoDB поддерживает режимы чтения
snapshot,majorityиlinearizable. По умолчанию используетсяsnapshot, что означает изоляцию на уровне снимков.Используйте
linearizableкогда приложению требуется строгая согласованность и необходимо предотвратить аномалии, связанные с неравномерной записью. Для других рабочих нагрузокsnapshotмогут повысить производительность и уменьшить конкуренцию за транзакции.
Напишите о проблеме
- Поддерживаются только параметры записи
w: 'majority'иw: 1.
Предпочтения при чтении
- Поддерживаются только параметры
primary,primaryPreferred,primary_preferred,secondary_preferredиnearestread.
Индексы
- Индексы с подстановочными знаками не поддерживаются.
- Совместимость Cloud Firestore с MongoDB не создает автоматически индекс по полю
_id, но гарантирует уникальность значений_idв пределах коллекции. - Индексы, для которых не включена поддержка многоключевых индексов, не преобразуются автоматически в многоключевые индексы на основе операций записи. Необходимо включить поддержку многоключевых индексов при создании индекса, и изменить этот параметр нельзя.
Ошибки
- Коды ошибок и сообщения могут отличаться в Cloud Firestore с поддержкой MongoDB и в MongoDB.
Команды
Следующие различия в поведении относятся к конкретным командам.
- Команды, не указанные в приведенных ниже таблицах, не поддерживаются.
-
maxTimeMSпринимается большинством команд, но может быть проигнорирован.
Запросы и написание текстов
| Командование | Неподдерживаемые поля |
|---|---|
|
|
|
|
|
|
|
|
|
Внутри оператора удаления:
|
|
|
|
|
|
|
|
|
| (никто) |
Транзакции и сессии
| Командование | Неподдерживаемые поля |
|---|---|
|
|
|
|
| (никто) |
Администрация
| Командование | Неподдерживаемые поля | Примечания |
|---|---|---|
|
| Если filter указан, он должен быть пустым. |
|
| Если authorizedCollections указан, он должен иметь значение false. |
|
| |
|
| Эта команда ничего не делает. Если capped указан, он должен быть равен false. |
Что дальше?
- Выполните команду быстрого запуска: создайте базу данных и подключитесь к ней .
- Полный список поддерживаемых функций см. в разделе «Поддерживаемые типы данных, драйверы и функции MongoDB» .