Dump Mongo Collection au format JSON

119

Existe-t-il un moyen de vider la collection mongo au format json? Soit sur le shell ou en utilisant le pilote java, je recherche celui qui offre les meilleures performances.

Parvin Gasimzade
la source
mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase adminVous pouvez spécifier le host, port, username, passwordcomme celui - ci et la base de données d'authentification par défaut est admin.
Max Peng

Réponses:

177

Mongo inclut un utilitaire mongoexport (voir la documentation) qui peut vider une collection. Cet utilitaire utilise le libmongoclient natif et est probablement la méthode la plus rapide.

mongoexport -d <database> -c <collection_name>

Aussi utile:

-o: écrire la sortie dans un fichier, sinon la sortie standard est utilisée ( docs )

--jsonArray: génère un document json valide, au lieu d'un objet json par ligne ( docs )

--pretty: sorties json formaté ( docs )

vrtx
la source
8
Utilisez l'indicateur -d pour spécifier la base de données à utiliser.
Reimund
8
Si vous voulez un JSON joli imprimé (par exemple pour inspecter une collection pendant le développement) utilisez le --prettydrapeau:mongoexport -d mydatabase -c mycollection --pretty
Max Truxa
6
Si Mongo est situé sur un hôte différent, voici un exemple du document Mongo mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
What would Be Cool
Il semble que ce --prettysoit parti depuis la version 2.6.10.
icedwater
115

Utilisez mongoexport / mongoimport pour vider / restaurer une collection:

Exporter le fichier JSON :

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

Importer un fichier JSON :

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

ATTENTION mongoimportet mongoexportne préservez pas de manière fiable tous les types de données BSON riches car JSON ne peut représenter qu'un sous-ensemble des types pris en charge par BSON. En conséquence, les données exportées ou importées avec ces outils peuvent perdre une certaine fidélité.

Aussi, http://bsonspec.org/

BSON est conçu pour être rapide à encoder et à décoder. Par exemple, les entiers sont stockés sous forme d'entiers 32 (ou 64) bits, ils n'ont donc pas besoin d'être analysés vers et depuis le texte. Cela utilise plus d'espace que JSON pour les petits entiers, mais est beaucoup plus rapide à analyser.

En plus de la compacité, BSON ajoute des types de données supplémentaires non disponibles dans JSON, notamment les types de données BinData et Date.

Priyanshu Chauhan
la source
1
Y at - il un exemple de « riche en données BSON » ne résisterait pas mongoexport/ mongoimportaller - retour?
andrewdotn
1
Il ajoute la prise en charge des types de données tels que Date et binaire qui ne sont pas pris en charge dans JSON. Aussi, plus rapide à l'encodage et au décodage bsonspec.org
Priyanshu Chauhan
5

Voici ma commande pour référence:

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

Sous Windows 7 (MongoDB 3.4), on doit déplacer le cmd à l'endroit où mongod.exeet mongo.exeréside le fichier => C:\MongoDB\Server\3.4\binsinon il ne fonctionnera pas dire qu'il ne recongnize mongoexportcommande.

fureur de la nuit
la source
Est-ce que quelqu'un connaît un formateur qui formatera le format JSON normal au format idiot "ligne unique sans virgule" que MongoDB attend lors de l'importation?
conor909 le
3

De la documentation Mongo:

L'utilitaire mongoexport prend une collection et exporte vers JSON ou CSV. Vous pouvez spécifier un filtre pour la requête ou une liste de champs à afficher

En savoir plus ici: http://www.mongodb.org/display/DOCS/mongoexport

Ninja
la source
-2

Si vous souhaitez vider toutes les collections, exécutez cette commande:

mongodump -d {DB_NAME}   -o /tmp 

Il générera toutes les données de collections jsonet les bsonextensions dans le /tmp/{DB_NAME}répertoire

Moe loin
la source
En fait, il est toujours en train de déposer bson et metadata.bson :-(
Prasad
9
Cette réponse est incorrecte. mongodumpproduit les données au BSONformat. D'autres réponses sont correctement appelées mongoexportle bon outil.
Christian Dechery
Cela fonctionne pour moi, sa sortie de toute la collection dans un dossier tmp avec des fichiers bson et json. J'ai utilisé mongodump -d {dbname} -o tmp
shyamzzp