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