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

Come esportare i risultati delle query MongoDB in un file JSON

Gli strumenti di database MongoDB includono un'utilità chiamata mongoexport che ti consente di esportare i dati MongoDB in un file CSV o JSON.

Una delle cose che puoi fare con questa utilità è esportare i risultati della query. Questo articolo mostra come utilizzare mongoexport per esportare i risultati della query 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.

Esempio

Il codice di esempio seguente esporta i risultati di una query in un file JSON:

mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json

Questo esporta una query che interroga una raccolta chiamata pets nel PetHotel Banca dati. La query viene esportata in un file chiamato dogs.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 .

Puoi anche usare il --type parametro per specificare in modo esplicito JSON. Il valore predefinito è JSON, quindi è facoltativo durante l'esportazione in JSON.

Puoi anche includere un --fields parametro per specificare quali campi esportare. Per impostazione predefinita, esporta tutti i campi quando si utilizza JSON. Tuttavia, quando esporti in CSV, devi specificare quali campi esportare.

Ecco un esempio dell'esempio precedente con questi due parametri aggiunti:

mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.json

Di seguito è riportata una spiegazione dei parametri che abbiamo fornito qui.

Parametro Descrizione
--db
o
-d
Specifica il database su cui eseguire mongoexport . 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 (o eseguire la query). 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. Dato che JSON è il valore predefinito, questo parametro è facoltativo durante l'esportazione in JSON.
--fields Specifica i campi che vogliamo esportare. Abbiamo la possibilità di esportare tutti i campi o solo alcuni. Quando si esporta in JSON, specificare i nomi dei campi è facoltativo (è un requisito quando si esporta in CSV).
--query
o
-q
Specifica la query per cui desideriamo esportare i risultati. Questo deve essere racchiuso tra virgolette singole (in modo che non interagisca con la tua shell).
Questo parametro può essere passato anche usando -q .
--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.

Innanzitutto, eseguiamo la query sulla raccolta originale.

use PetHotel
db.pets.find({ "type": "Dog" })

Risultato:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

Quindi possiamo vedere che ci sono 4 cani, tutti con gli stessi campi che abbiamo specificato nella nostra operazione di esportazione.

Ora apriamo il file esportato dogs.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":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.

Esporta meno campi

Puoi specificare meno campi con i --fields parametro se lo desideri.

Esempio:

mongoexport --db=PetHotel --collection=pets --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json

File risultante:

{"_id":1.0,"name":"Wag","weight":20.0}
{"_id":2.0,"name":"Bark","weight":10.0}
{"_id":6.0,"name":"Fetch","weight":17.0}
{"_id":7.0,"name":"Jake","weight":30.0}

Noterai che il _id campo è stato incluso nel file esportato, anche se non l'ho incluso esplicitamente nei --fields discussione. Questo perché il _id il campo è sempre incluso durante l'esportazione in JSON, anche quando non lo includi esplicitamente. Questo non è il caso dell'esportazione in CSV.

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 --query='{ "type": "Dog" }' --out=data/dogs.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).