sql >> Database teknologi >  >> NoSQL >> MongoDB

Kopier/klon en samling i MongoDB

I tidligere versioner af MongoDB kunne du bruge db.collection.copyTo() metode til at kopiere en samling.

MongoDB har siden forældet denne metode. Fra og med version 4.2 har MongoDB også fjernet eval kommando. Givet db.collection.copyTo() omslutter eval , betyder det, at du ikke kan bruge nogen af ​​dem, hvis du bruger MongoDB 4.2 eller nyere.

Heldigvis er der en anden måde at kopiere en MongoDB-samling på.

Søg efter MongoDB-databaseværktøjer

I MongoDB kan du klone en samling ved hjælp af MongoDB Database Tools. Specifikt kan du bruge mongodump og mongorestore .

MongoDB-databaseværktøjerne er en række kommandolinjeværktøjer til at arbejde med MongoDB.

Hvis du ikke er sikker på, om du har installeret MongoDB-databaseværktøjerne, kan du prøve at køre følgende kommandoer i din terminal eller kommandoprompt for at kontrollere:

mongodump --version
mongorestore --version

Det tjekker specifikt efter mongodump og mongorestore versioner.

Hvis du ikke har dem, kan du bruge installationsinstruktionerne på MongoDB-webstedet til at installere MongoDB-databaseværktøjer på dit system.

Klon en samling til den samme database

Du skal køre mongodump og mongorestore fra dit systems kommandolinje (f.eks. et nyt terminal- eller kommandopromptvindue). Kør det ikke fra mongo skal.

Her er et eksempel på kode, der kloner en samling til den samme database:

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

I dette tilfælde sikkerhedskopierer vi pets samling i PetHotel database, og gendan den derefter som pets2 i samme database.

Dette bruger mongodump for at oprette en sikkerhedskopi af samlingen, derefter mongorestore at gendanne denne samling under et andet navn. Vi gjorde dette ved at dumpe samlingen til standardoutputstrømmen og røre ind i mongorestore .

Her er, hvad hver parameter gør:

Parameter Beskrivelse
--archive Skriver output til en specificeret arkivfil eller, hvis arkivfilen er uspecificeret, skriver til standardoutput (stdout ). I vores tilfælde er arkivfilen uspecificeret, så den skrev til standardoutputtet.
--db Specificerer den database, der indeholder den samling, vi ønsker at klone. I dette tilfælde kaldes databasen PetHotel .
--nsFrom Specificerer samlingen i dumpfilen. Dette er den samling, vi ønsker at klone.
--nsTo Specificerer samlingsnavnet, der skal bruges, når det gendannes. I vores tilfælde kalder vi det pets2 .

Kopiér en samling til en anden database

Du kan bruge samme teknik til at kopiere samlingen til en anden database. I dette tilfælde behøver du ikke engang at ændre navnet på samlingen, hvis du ikke vil.

Her er et eksempel:

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

Dette er meget lig det forrige eksempel, bortset fra at vores --nsTo argument specificerer PetHouse.pets som destinationssamling.

Det betyder, at den klonede samling vil blive kaldt pets , og det vil være placeret i PetHouse database (i stedet for den originale PetHotel database).


  1. Hvordan undgår MongoDB SQL-injektionsroden?

  2. Mongodb, find om en samling er tom, node.js

  3. Den hurtigste MongoDB på Azure!

  4. understøtter hibernate-redis cache på 2. niveau, der deles af forskellige hibernate-instanser