In eerdere versies van MongoDB kon je de copyDB
. gebruiken commando of zijn hulpmethode, db.copyDatabase()
om een database te kopiëren.
MongoDB heeft deze sindsdien afgeschaft. Vanaf versie 4.2 heeft MongoDB ook de copydb
. verwijderd commando, en dus ook de db.copyDatabase()
methode, wat betekent dat u ze niet kunt gebruiken, zelfs niet als u dat zou willen als u MongoDB 4.2 of hoger gebruikt.
Gelukkig is er een andere manier om een MongoDB-database te kopiëren.
Controleer op MongoDB Database Tools
In MongoDB kunt u een database klonen met behulp van de MongoDB Database Tools. In het bijzonder kunt u mongodump
. gebruiken en mongorestore
.
De MongoDB Database Tools zijn een reeks opdrachtregelhulpprogramma's voor het werken met MongoDB.
Als je niet zeker weet of je de MongoDB Database Tools hebt geïnstalleerd, probeer dan de volgende commando's in je Terminal of Command Prompt om te controleren:
mongodump --version
mongorestore --version
Dat controleert specifiek op de mongodump
en mongorestore
versies.
Als je ze niet hebt, kun je de installatie-instructies op de MongoDB-website gebruiken om MongoDB Database Tools op je systeem te installeren.
Voorbeeld van het klonen van een database
U moet mongodump
. uitvoeren en mongorestore
vanaf de opdrachtregel van uw systeem (bijvoorbeeld een nieuw Terminal- of opdrachtpromptvenster). Voer het niet uit vanaf de mongo
schelp.
Hier is een voorbeeld van code die een database kloont:
mongodump --archive --db=PetHotel | mongorestore --archive --nsFrom='PetHotel.*' --nsTo='PetHouse.*'
In dit geval maken we een back-up van het PetHotel
database en herstel vervolgens al zijn collecties naar een database met de naam PetHouse
. Met andere woorden, we hebben het PetHotel
. gekloond database als PetHouse
.
Dit gebruikt mongodump
om een back-upbestand van de database te maken en vervolgens mongorestore
om die database onder een andere naam te herstellen. We hebben dit gedaan door de database naar de standaard uitvoerstroom te dumpen en door te sluizen naar mongorestore
.
Dit is wat elke parameter doet:
Parameter | Beschrijving |
---|---|
--archive | Schrijft de uitvoer naar een gespecificeerd archiefbestand of, als het archiefbestand niet gespecificeerd is, schrijft naar de standaarduitvoer (stdout ). In ons geval is het archiefbestand niet gespecificeerd, dus schreef het naar de standaarduitvoer. |
--db | Specificeert een database waarvan een back-up moet worden gemaakt. In dit geval maken we een back-up van het PetHotel database. |
--nsFrom | Specificeert de verzameling in het dumpbestand. Het asterisk-jokerteken (* ) specificeert alle collecties. |
--nsTo | Specificeert de collectienaam die moet worden gebruikt in de herstelde database. |
Je kunt ook mongodump
. gebruiken om alle databases te dumpen. Om dat te doen, voert u gewoon mongodump
. uit zonder enige argumenten. Wanneer u dat echter doet, bevat het niet de local
en config
databases in de dump.