sql >> Database >  >> NoSQL >> MongoDB

Een database kopiëren/klonen in MongoDB

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.


  1. Hoe om te gaan met het tijdzoneprobleem bij het opslaan van datums in utc met behulp van mongod?

  2. MongoDB samengestelde sleutel

  3. FindOne gebruiken in mongodb om element met max id te krijgen

  4. Hydra-CLI verbinden met een wachtwoordbeveiligde redis-server?