Gli strumenti di database MongoDB includono un'utilità chiamata mongoexport
che ti consente di esportare i dati MongoDB in un file CSV o JSON.
Questo articolo mostra come utilizzare mongoexport
per esportare una raccolta MongoDB in un file JSON.
Sintassi
La sintassi per mongoexport
va così:
mongoexport --collection=<coll> <options> <connection-string>
Devi eseguire mongoexport
comandi dalla riga di comando del sistema (ad es. una nuova finestra del terminale o del prompt dei comandi).
Non eseguire mongoexport
comandi dal mongo
guscio.
Esportare una raccolta
Il codice di esempio seguente esporta una raccolta da MongoDB in un file JSON:
mongoexport --db=PetHotel --collection=pets --out=data/pets.json
Questo esporta una raccolta chiamata pets
dal PetHotel
database in un file chiamato pets.json
nei data/
cartella.
Se la cartella non esiste, viene creata. Lo stesso con il file. A proposito, questo presuppone che non ci siano problemi di autorizzazione con la scrittura di un file nella posizione specificata.
In questo esempio non ho specificato alcun host, porta, autenticazione, ecc, quindi esporta la raccolta dall'istanza MongoDB in esecuzione sul numero di porta localhost predefinito 27017
.
L'esempio sopra potrebbe anche essere scritto in questo modo:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --out=data/pets.json
In questo caso abbiamo aggiunto il --type
parametro e un --fields
parametro per specificare quali campi includere nel file JSON.
Di seguito è riportata una spiegazione dei parametri che abbiamo fornito qui.
Parametro | Descrizione |
---|---|
--db o -d | Specifica il database che contiene la raccolta che vogliamo esportare. In questo caso, il database si chiama PetHotel . Questo parametro può essere passato in alternativa usando -d (invece di --db ). |
--collection o -c | Specifica la raccolta che vogliamo esportare. In questo caso, la collezione si chiama pets . Questo parametro può in alternativa essere passato come -c (invece di --collection ). |
--type | Specifica il tipo di file esportato. In questo caso specifichiamo json per esportarlo in un file JSON. json è il valore predefinito, quindi se non specifichiamo questo parametro, il file viene emesso come file JSON. |
--fields | Specifica i campi che vogliamo esportare. Abbiamo la possibilità di esportare tutti i campi della raccolta o solo alcuni. Separa più nomi di campo con una virgola. Quando si esporta in JSON, la specifica dei nomi dei campi è facoltativa (a differenza di CSV). |
--out | Specifica il nome del file esportato e la posizione in cui verrà posizionato. Se non specifichi un nome file, mongoexport scrive i dati nello standard output (stdout ). |
Controlla il file esportato
Verifichiamo che l'operazione di esportazione abbia funzionato come previsto.
Per prima cosa, controlliamo la collezione originale.
use PetHotel
db.pets.find()
Risultato:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Quindi possiamo vedere che ci sono 7 animali domestici, tutti con gli stessi campi che abbiamo specificato nella nostra operazione di esportazione.
Ora apriamo il file esportato pets.json
per vedere cosa c'è dentro:
{"_id":1.0,"name":"Wag","type":"Dog","weight":20.0} {"_id":2.0,"name":"Bark","type":"Dog","weight":10.0} {"_id":3.0,"name":"Meow","type":"Cat","weight":7.0} {"_id":4.0,"name":"Scratch","type":"Cat","weight":8.0} {"_id":5.0,"name":"Bruce","type":"Bat","weight":3.0} {"_id":6.0,"name":"Fetch","type":"Dog","weight":17.0} {"_id":7.0,"name":"Jake","type":"Dog","weight":30.0}
Tutti i dati sono nel file esportato come previsto.
Meno campi
Puoi usare i --fields
parametro per specificare quali campi si desidera esportare.
Quando lo fai su file JSON, _id
il campo viene sempre esportato (anche quando non lo includi nell'elenco dei campi da esportare).
Esempio:
mongoexport --db=PetHotel --collection=pets --fields=name,type --out=data/pets.json
In questo caso specifico due campi da esportare.
Quando apro il file esportato, vedo che entrambi i campi vengono esportati, più il _id
campo:
{"_id":1.0,"name":"Wag","type":"Dog"} {"_id":2.0,"name":"Bark","type":"Dog"} {"_id":3.0,"name":"Meow","type":"Cat"} {"_id":4.0,"name":"Scratch","type":"Cat"} {"_id":5.0,"name":"Bruce","type":"Bat"} {"_id":6.0,"name":"Fetch","type":"Dog"} {"_id":7.0,"name":"Jake","type":"Dog"}
Controllo accessi/Autenticazione
Se non stai usando localhost, puoi usare il --host
parametro per specificare l'host e --port
per specificare la porta. Puoi anche usare il --username
parametro per specificare il nome utente e --password
a per la password. Se ometti il parametro password, ti verrà richiesto. C'è anche un --authenticationDatabase
parametro per specificare il database di autenticazione in cui è stato creato l'utente.
Esempio:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --out=data/pets.json
Cerca mongoexport
mongoexport
fa parte del pacchetto MongoDB Database Tools. I MongoDB Database Tools sono una suite di utilità da riga di comando per lavorare con MongoDB.
Se non sei sicuro di avere MongoDB Database Tools/mongoexport
installato, prova a eseguire il seguente comando nel terminale o nel prompt dei comandi per verificare:
mongoexport --version
Se ce l'hai, dovresti vedere le informazioni sulla versione, ecc. Se non ce l'hai, puoi usare le istruzioni di installazione sul sito Web di MongoDB per installarlo sul tuo sistema.
Dove eseguire i comandi?
Non dimenticare che devi eseguire mongoexport
comandi dalla riga di comando del sistema (ad es. una nuova finestra del terminale o del prompt dei comandi).
Non eseguirli da mongo
guscio.