Проблема с mongorestore между mongodb2.4 и mongodb2.6
Всем доброго времени суток! Не так давно пересобрал world в gentoo, что повлекло обновление mongoDB. Запустил консольку, выполнил привычные mongodump и mongorestore. Открываю свое приложение и вижу кучу ошибок о том, что часть коллекций не существуют. Перезапустил mongodump, mongorestore, проверяю список колекций и вижу, что из 50 коллекций существует только ~30.
Начал разбираться и пришел к выводу, что проблема таилась в следующем: на сервере установлена mongodb2.4, а у меня установлена mongodb2.6. Первой мыслью было: быстро пересобрать у себя монгу с версией 2.4 и радоваться жизни. Это, как говорится, не кошерно. Обратился за помощью к гуглу, но выяснить удалось лишь то, что в mongo2.6 изменили логику работы команды создания коллекции. Теперь нельзя использовать «size=null» and «max=null». Но решения этой проблемы не было предоставлено.И вот сегодня, благодаря подсказке Хабраюзера kuzma решение было найдено. Все получилось и заработало. Поэтому решил поделиться им со всеми, возможно оно будет полезно еще кому-нибудь.
Если база данных how-it-will-be-called-locally (смотреть ниже) еще не существует то выполнить следующую команду:
mongo --eval «db.copyDatabase ('remote-db-name','how-it-will-be-called-locally','server-address','user','password')» Если база данных уже существует, она должна быть удалена перед созданием
mongo how-it-will-be-called-locally --eval «db.dropDatabase (); db.copyDatabase ('remote-db-name','how-it-will-be-called-locally', 'server-address','user','password')» Выше приведенный код скопирует удаленную базу данных remote-db-name и создаст ее копию локально с именем how-it-will-be-called-locally
Вот и все (: