Какие типы MongoDB не сохраняются в mongoimport / mongoexport? - PullRequest
1 голос
/ 12 июня 2019

Документация для mongoexport содержит это страшное предупреждение,

Избегайте использования mongoimport и mongoexport для полных производственных резервных копий экземпляров.Они надежно не сохраняют все расширенные типы данных BSON , поскольку JSON может представлять только подмножество типов, поддерживаемых BSON.Используйте функции mongodump и mongorestore, как описано в разделе Методы резервного копирования MongoDB, для такого рода функций.

Далее страница скажет:

Для сохранения информации о типах, mongoexport и mongoimportиспользует представление в строгом режиме для определенных типов.

Что такое типы , которые mongoexport все еще не представляет должным образом, несмотря на«представление в строгом режиме»?

Запрашиваемая, потому что mongorestore имеет крайне раздражающее ограничение: не поддерживает upsert параметр , что делает невозможным использованиедля синхронизации коллекций, где обновляются только несколько документов.Вам потребуется --drop всей коллекции, прежде чем восстанавливать ее полностью с нуля, что может потребовать очень много времени для больших коллекций, особенно если необходимо пересоздать текстовые индексы.

1 Ответ

0 голосов
/ 15 июня 2019

Оказывается, что предупреждение против моноимпорта / экспорта устарело. Все еще хорошая идея использовать mongodump / restore для скорости, но mongoexport сохраняет информацию о типе, используя MongoDB Extended JSON формат . Например, поле «Дата» больше не преобразуется в текст без вывода сообщений, а вместо этого в:

{ "$date": "<date>" }

, где <date> - это ISO-8601 YYYY-MM-DDTHH:mm:ss.mmm<+/-Offset> представление даты. Регулярные выражения конвертируются в

{ "$regex": "<sRegex>", "$options": "<sOptions>" }

и т.д.. Эти текстовые представления полей документа анализируются mongoimport, восстанавливая исходные типы. См. Типы данных BSON и связанные представления для получения дополнительной информации.

Надеюсь, предупреждение скоро будет снято .

...