В по-ранни версии на MongoDB можете да използвате copyDB
команда или нейния помощен метод, db.copyDatabase()
за копиране на база данни.
Оттогава MongoDB ги отхвърли. Също така, започвайки от версия 4.2, MongoDB премахна copydb
командата, а следователно и db.copyDatabase()
метод, което означава, че не можете да ги използвате, дори ако искате, ако използвате MongoDB 4.2 или по-нова версия.
За щастие има друг начин за копиране на база данни MongoDB.
Проверете за инструменти за база данни на MongoDB
В MongoDB можете да клонирате база данни с помощта на MongoDB Database Tools. По-конкретно, можете да използвате mongodump
и mongorestore
.
Инструментите за база данни на MongoDB са набор от помощни програми от командния ред за работа с MongoDB.
Ако не сте сигурни дали имате инсталирани MongoDB Database Tools, опитайте да изпълните следните команди във вашия терминал или команден ред, за да проверите:
mongodump --version
mongorestore --version
Това специално проверява за mongodump
и mongorestore
версии.
Ако нямате такива, можете да използвате инструкциите за инсталиране на уебсайта на MongoDB, за да инсталирате MongoDB Database Tools на вашата система.
Пример за клониране на база данни
Трябва да стартирате mongodump
и mongorestore
от командния ред на вашата система (например нов прозорец на терминал или команден ред). Не го стартирайте от mongo
черупка.
Ето пример за код, който клонира база данни:
mongodump --archive --db=PetHotel | mongorestore --archive --nsFrom='PetHotel.*' --nsTo='PetHouse.*'
В този случай правим резервно копие на PetHotel
база данни, след което възстанови всичките й колекции в база данни, наречена PetHouse
. С други думи, клонирахме PetHotel
база данни като PetHouse
.
Това използва mongodump
за да създадете архивен файл на базата данни, след това mongorestore
за да възстановите тази база данни под друго име. Направихме това, като изхвърлихме базата данни в стандартния изходен поток и прехвърлихме в mongorestore
.
Ето какво прави всеки параметър:
Параметър | Описание |
---|---|
--archive | Записва изхода в определен архивен файл или, ако архивният файл не е посочен, записва в стандартния изход (stdout ). В нашия случай архивният файл е неуточнен, така че записа в стандартния изход. |
--db | Определя база данни за архивиране. В този случай правим резервно копие на PetHotel база данни. |
--nsFrom | Указва колекцията в дъмп файла. Заместващият знак звездичка (* ) определя всички колекции. |
--nsTo | Указва името на колекцията, която трябва да се използва във възстановената база данни. |
Можете също да използвате mongodump
да изхвърлите всички бази данни. За да направите това, просто стартирайте mongodump
без никакви аргументи. Въпреки това, когато направите това, то не включва local
и config
бази данни в неговия дъмп.