Как я могу изменить размер коллекции mongodb без потери данных?
Как изменить размер коллекции mongodb без потери данных?
Есть ли команда для этого, или кто-нибудь может предоставить script?
Ответ 1
Вам в основном нужно создать новую ограниченную коллекцию и скопировать документы на нее. Это можно сделать очень легко в javascript (shell) или на выбранном вами языке.
Примечание. Просто убедитесь, что никто не вставляет/обновляет старую коллекцию при переключении. Если вы запустите этот код в db.eval( "...." ), он заблокирует сервер во время его запуска.
У меня уже есть Capped Collection с именем "log". Поэтому я снова запустил "convertToCapped", указав новый размер. Я не пробовал его по уменьшению размера коллекции. Это может быть что-то, что вам нужно будет использовать версию Скотта Эрнандеса. Но это работает для увеличения размера ваших закрытых коллекций без потери данных или ваших индексов.
EDIT: @JMichal верна. Данные сохраняются, но индексы не подлежат восстановлению.