Scarica Mongo Collection in formato JSON


119

C'è un modo per scaricare la raccolta di mongo in formato json? O sulla shell o utilizzando il driver Java. Sto cercando quello con le migliori prestazioni.


mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase adminÈ possibile specificare il host, port, username, passwordin questo modo e il database di autenticazione predefinito è admin.
Max Peng

Risposte:


177

Mongo include un'utilità mongoexport (vedere la documentazione) che può eseguire il dump di una raccolta. Questa utility utilizza il libmongoclient nativo ed è probabilmente il metodo più veloce.

mongoexport -d <database> -c <collection_name>

Anche utile:

-o: scrive l'output su file, altrimenti viene utilizzato lo standard output ( docs )

--jsonArray: genera un documento json valido, invece di un oggetto json per riga ( documenti )

--pretty: restituisce json formattato ( documenti )


8
Usa il flag -d per specificare quale database usare.
Reimund

8
Se vuoi un JSON abbastanza stampato (ad esempio per ispezionare una raccolta durante lo sviluppo) usa il --prettyflag:mongoexport -d mydatabase -c mycollection --pretty
Max Truxa

6
Se Mongo si trova su un host diverso, ecco un esempio tratto dal documento Mongo mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
What would be Cool

Sembra che --prettysia scomparso dalla versione 2.6.10.
icedwater

115

Usa mongoexport / mongoimport per eseguire il dump / ripristinare una raccolta:

Esporta file JSON :

mongoexport --db <database-name> --collection <collection-name> --out output.json

Importa file JSON :

mongoimport --db <database-name> --collection <collection-name> --file input.json

ATTENZIONE mongoimporte mongoexportnon conservare in modo affidabile tutti i tipi di dati BSON ricchi perché JSON può rappresentare solo un sottoinsieme dei tipi supportati da BSON. Di conseguenza, i dati esportati o importati con questi strumenti potrebbero perdere una certa misura di fedeltà.

Inoltre, http://bsonspec.org/

BSON è progettato per essere veloce da codificare e decodificare. Ad esempio, gli interi vengono memorizzati come interi a 32 (o 64) bit, quindi non è necessario analizzarli da e verso il testo. Questo utilizza più spazio di JSON per piccoli numeri interi, ma è molto più veloce da analizzare.

Oltre alla compattezza, BSON aggiunge altri tipi di dati non disponibili in JSON, in particolare i tipi di dati BinData e Date.


1
C'è un esempio di ciò che “ricco di dati BSON” non sarebbe sopravvivere a un mongoexport/ mongoimportandata e ritorno?
andrewdotn

1
Aggiunge il supporto per i tipi di dati come Date e binary che non sono supportati in JSON. Inoltre, più veloce nella codifica e decodifica bsonspec.org
Priyanshu Chauhan

5

Ecco il mio comando per riferimento:

mongoexport --db AppDB --collection files --pretty --out output.json

In Windows 7 (MongoDB 3.4), si deve spostare il cmd per il luogo in cui mongod.exee mongo.exerisiede il file => C:\MongoDB\Server\3.4\binaltrimenti non funzionerà dicendo che non fa conoscimento mongoexportcomando.


Qualcuno sa di un formattatore che formatterà il json normale nel formato sciocco "a riga singola senza virgola" che MongoDB si aspetta durante l'importazione?
conor909


-2

Se vuoi scaricare tutte le raccolte, esegui questo comando:

mongodump -d {DB_NAME}   -o /tmp 

Genererà tutti i dati delle raccolte jsone le bsonestensioni nella /tmp/{DB_NAME}directory


È un dato di fatto che sta ancora scaricando bson e metadata.bson :-(
Prasad

9
Questa risposta non è corretta. mongodumprestituisce i dati in BSONformato. Altre risposte indicate correttamente mongoexportcome lo strumento giusto.
Christian Dechery

Questo funziona per me, è l'output di tutta la raccolta in una cartella tmp con file bson e json. Ho usato mongodump -d {dbname} -o tmp
shyamzzp
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.