Nelle versioni precedenti di MongoDB, potresti usare copyDB
comando o il suo metodo di supporto, db.copyDatabase()
per copiare un database.
MongoDB da allora li ha deprecati. Inoltre, a partire dalla versione 4.2, MongoDB ha rimosso copydb
comando, e quindi anche il db.copyDatabase()
metodo, il che significa che non puoi usarli anche se lo desideri se stai utilizzando MongoDB 4.2 o versioni successive.
Fortunatamente, c'è un altro modo per copiare un database MongoDB.
Cerca gli strumenti del database MongoDB
In MongoDB, puoi clonare un database utilizzando MongoDB Database Tools. In particolare, puoi utilizzare mongodump
e mongorestore
.
I MongoDB Database Tools sono una suite di utilità da riga di comando per lavorare con MongoDB.
Se non sei sicuro di aver installato MongoDB Database Tools, prova a eseguire i seguenti comandi nel tuo terminale o nel prompt dei comandi per verificare:
mongodump --version
mongorestore --version
Questo controlla specificamente il mongodump
e mongorestore
versioni.
Se non li hai, puoi utilizzare le istruzioni di installazione sul sito Web di MongoDB per installare MongoDB Database Tools sul tuo sistema.
Esempio di clonazione di un database
Devi eseguire mongodump
e mongorestore
dalla riga di comando del sistema (ad es. una nuova finestra del terminale o del prompt dei comandi). Non eseguirlo da mongo
guscio.
Ecco un esempio di codice che clona un database:
mongodump --archive --db=PetHotel | mongorestore --archive --nsFrom='PetHotel.*' --nsTo='PetHouse.*'
In questo caso, eseguiamo il backup di PetHotel
database, quindi ripristina tutte le sue raccolte in un database chiamato PetHouse
. In altre parole, abbiamo clonato il PetHotel
database come PetHouse
.
Questo utilizza mongodump
per creare un file di backup del database, quindi mongorestore
per ripristinare quel database con un nome diverso. L'abbiamo fatto scaricando il database nel flusso di output standard e collegandolo a mongorestore
.
Ecco cosa fa ogni parametro:
Parametro | Descrizione |
---|---|
--archive | Scrive l'output in un file di archivio specificato o, se il file di archivio non è specificato, scrive nell'output standard (stdout ). Nel nostro caso, il file di archivio non è specificato, quindi è stato scritto nell'output standard. |
--db | Specifica un database di cui eseguire il backup. In questo caso, eseguiamo il backup di PetHotel banca dati. |
--nsFrom | Specifica la raccolta nel file di dump. Il carattere jolly asterisco (* ) specifica tutte le raccolte. |
--nsTo | Specifica il nome della raccolta da utilizzare nel database ripristinato. |
Puoi anche usare mongodump
per eseguire il dump di tutti i database. Per farlo basta eseguire mongodump
senza alcun argomento. Tuttavia, quando lo fai, non include il local
e config
database nel suo dump.