sql >> Databasteknik >  >> NoSQL >> MongoDB

Kopiera/klona en databas i MongoDB

I tidigare versioner av MongoDB kunde du använda copyDB kommandot eller dess hjälpmetod, db.copyDatabase() att kopiera en databas.

MongoDB har sedan dess avvecklat dessa. Från och med version 4.2 har MongoDB också tagit bort copydb kommandot och därför även db.copyDatabase() metod, vilket innebär att du inte kan använda dem även om du vill om du använder MongoDB 4.2 eller senare.

Lyckligtvis finns det ett annat sätt att kopiera en MongoDB-databas.

Sök efter MongoDB Database Tools

I MongoDB kan du klona en databas med hjälp av MongoDB Database Tools. Specifikt kan du använda mongodump och mongorestore .

MongoDB Database Tools är en uppsättning kommandoradsverktyg för att arbeta med MongoDB.

Om du inte är säker på om du har MongoDB Database Tools installerade, prova att köra följande kommandon i din terminal eller kommandotolk för att kontrollera:

mongodump --version
mongorestore --version

Det söker specifikt efter mongodump och mongorestore versioner.

Om du inte har dem kan du använda installationsinstruktionerna på MongoDB-webbplatsen för att installera MongoDB Database Tools på ditt system.

Exempel på kloning av en databas

Du måste köra mongodump och mongorestore från ditt systems kommandorad (t.ex. ett nytt terminal- eller kommandotolksfönster). Kör det inte från mongo skal.

Här är ett exempel på kod som klonar en databas:

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

I det här fallet säkerhetskopierar vi PetHotel databas, återställ sedan alla dess samlingar till en databas som heter PetHouse . Med andra ord, vi klonade PetHotel databas som PetHouse .

Detta använder mongodump för att skapa en säkerhetskopia av databasen, sedan mongorestore för att återställa databasen under ett annat namn. Vi gjorde detta genom att dumpa databasen till standardutgångsströmmen och koppla in i mongorestore .

Så här gör varje parameter:

Parameter Beskrivning
--archive Skriver utdata till en specificerad arkivfil eller, om arkivfilen är ospecificerad, skriver till standardutdata (stdout ). I vårt fall är arkivfilen ospecificerad, så den skrev till standardutgången.
--db Anger en databas som ska säkerhetskopieras. I det här fallet säkerhetskopierar vi PetHotel databas.
--nsFrom Anger samlingen i dumpfilen. Asterisk jokertecken (* ) specificerar alla samlingar.
--nsTo Anger samlingsnamnet som ska användas i den återställda databasen.

Du kan också använda mongodump att dumpa alla databaser. För att göra det, kör bara mongodump utan några argument. Men när du gör det inkluderar den inte local och config databaser i sin dump.


  1. Hur man använder Spring Boot med MongoDB

  2. Matchningsalternativet Redis skanningskommando fungerar inte i Python

  3. Konfigurera loggning för MongoDB Java-drivrutinen

  4. Redis Python - hur man tar bort alla nycklar enligt ett specifikt mönster i python, utan att python itererar