sql >> Database >  >> NoSQL >> MongoDB

Een verzameling kopiëren/klonen in MongoDB

In eerdere versies van MongoDB kon je de db.collection.copyTo() gebruiken methode om een ​​verzameling te kopiëren.

MongoDB heeft die methode sindsdien afgeschaft. Vanaf versie 4.2 heeft MongoDB ook de eval . verwijderd opdracht. Gegeven db.collection.copyTo() wraps eval , dit betekent dat u geen van beide kunt gebruiken als u MongoDB 4.2 of hoger gebruikt.

Gelukkig is er een andere manier om een ​​MongoDB-verzameling te kopiëren.

Controleer op MongoDB Database Tools

In MongoDB kunt u een verzameling 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.

Kloon een verzameling naar dezelfde 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 verzameling naar dezelfde database kloont:

mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2'

In dit geval maken we een back-up van de pets ophalen in het PetHotel database en herstel deze vervolgens als pets2 in dezelfde database.

Dit gebruikt mongodump om een ​​back-upbestand van de verzameling te maken en vervolgens mongorestore om die collectie onder een andere naam te herstellen. We hebben dit gedaan door de verzameling 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 de database die de collectie bevat die we willen klonen. In dit geval heet de database PetHotel .
--nsFrom Specificeert de verzameling in het dumpbestand. Dit is de collectie die we willen klonen.
--nsTo Specificeert de collectienaam die moet worden gebruikt bij het herstellen. In ons geval noemen we het pets2 .

Kopieer een verzameling naar een andere database

U kunt dezelfde techniek gebruiken om de verzameling naar een andere database te kopiëren. In dit geval hoeft u de naam van de collectie niet eens te wijzigen als u dat niet wilt.

Hier is een voorbeeld:

mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHouse.pets'

Dit lijkt erg op het vorige voorbeeld, behalve dat onze --nsTo argument specificeert PetHouse.pets als de bestemmingsverzameling.

Dit betekent dat de gekloonde verzameling pets wordt genoemd , en het bevindt zich in het PetHouse database (in plaats van het originele PetHotel database).


  1. Een database maken in Mongo:kan geen verbinding maken, verbinding maken is mislukt

  2. Redis uitvoeren op nodejs Docker-afbeelding

  3. Advies nodig om database in mongodb te ontwerpen met mangoest

  4. Mongo - Negeer eigendom van persistentie