Comment exporter json de Mongodb en utilisant robomongo

Donc je ne sais pas grand chose sur MongoDB . J’ai RoboMongo avec lequel je me connecte à un MongoDB. Ce que je dois faire c’est ceci – il y a une collection dans ce MongoDB. Je souhaite exporter les données de cette collection pour pouvoir les enregistrer dans un fichier.

J’ai utilisé l’interface pour ouvrir les données de la collection sous forme de texte et fait un CTRL + A et collé dans un fichier texte. Cependant, j’ai constaté que toutes les données ne sont pas copiées et que les données textuelles contenaient de nombreux commentaires qui brisent naturellement le JSON.

Je me demande si RoboMongo a une fonction d’ Export As JSON pour pouvoir effectuer une exportation propre.

Tous les indicateurs sont appréciés!

Vous pouvez utiliser tojson pour convertir chaque enregistrement en JSON dans un script shell MongoDB .

Exécutez ce script dans RoboMongo:

 var cursor = db.getCollection('foo').find({}, {}); while(cursor.hasNext()) { print(tojson(cursor.next())) } 

Cela imprime tous les résultats sous la forme d’un tableau de type JSON.

Le résultat n’est pas vraiment JSON! Certains types, tels que les dates et les ID d’object, sont imprimés en tant ISODate("2016-03-03T12:15:49.996Z") fonction JavaScript, par exemple, ISODate("2016-03-03T12:15:49.996Z") .

Peut ne pas être très efficace pour les jeux de résultats volumineux, mais vous pouvez limiter la requête. Vous pouvez également utiliser mongoexport .

Il existe quelques interfaces graphiques MongoDB, certaines d’entre elles prenant en charge l’exportation de données. Vous trouverez une liste complète des interfaces graphiques de MongoDB sur http://mongodb-tools.com

Vous avez demandé à exporter les résultats de votre requête et non à exporter des collections entières. Essayez 3I MongoChef MongoDB GUI , cet outil a un support pour votre cas d’utilisation spécifique.

La fonctionnalité du shell de Robomongo résoudra le problème. Dans mon cas, j’avais besoin de deux colonnes au format CSV.

 var cursor = db.getCollection('Member_details').find({Category: 'CUST'},{CustomerId :1,Name :1,_id:0}) while (cursor.hasNext()) { var record = cursor.next(); print(record.CustomerID + "," + record.Name) } Output : ------- 334, Harison 433, Rechard 453, Michel 533, Pal 

N’exécutez pas cette commande sur le shell, entrez ce script à une invite de commande avec votre nom de firebase database, nom de collection et nom de fichier, tous remplaçant les espaces réservés.

 mongoexport --db (Database name) --collection (Collection Name) --out (File name).json 

Ça marche pour moi.

Je ne pense pas que robomongo ait une telle caractéristique. Donc, il vaut mieux utiliser la fonction mongodb comme mongoexport pour une collection spécifique.

http://docs.mongodb.org/manual/reference/program/mongoexport/#export-in-json-format

Mais si vous recherchez une solution de sauvegarde, il vaut mieux utiliser

 mongodump / mongorestore 

vous dites “exporter vers un fichier” comme dans un tableur? aime un .csv?

IMO c’est le moyen le plus simple de le faire dans Robo 3T (anciennement robomongo):

  1. En haut à droite de l’interface graphique du Robo 3T, il y a un bouton “Afficher les résultats en mode texte”, cliquez dessus et tout copier

  2. tout coller dans ce site: https://json-csv.com/

  3. cliquez sur le bouton de téléchargement et maintenant vous l’avez dans une feuille de calcul.

J’espère que cela aidera quelqu’un, car je souhaiterais que Robo 3T dispose de capacités d’exportation

En développant la réponse d’Anish, je voulais quelque chose que je pourrais appliquer à n’importe quelle requête pour générer automatiquement tous les champs plutôt que de les définir dans l’instruction print. Cela peut probablement être simplifié, mais c’était quelque chose de rapide et de sale qui fonctionne très bien:

 var cursor = db.getCollection('foo').find({}, {bar: 1, baz: 1, created_at: 1, updated_at: 1}).sort({created_at: -1, updated_at: -1}); while (cursor.hasNext()) { var record = cursor.next(); var output = ""; for (var i in record) { output += record[i] + ","; }; output = output.subssortingng(0, output.length - 1); print(output); } 

Si vous souhaitez utiliser mongoimport , vous souhaiterez exporter de cette manière:

 db.getCollection('tables') .find({_id: 'q3hrnnoKu2mnCL7kE'}) .forEach(function(x){printjsononeline(x)}); 

En utilisant un script shell robomongo:

 //on the same db var cursor = db.collectionname.find(); while (cursor.hasNext()) { var record = cursor.next(); db.new_collectionname.save(record); } 

Utilisation de la commande d’exportation et d’importation de mongodb

Vous pouvez append le paramètre / flag mongoexport à votre commande mongoexport , cela exporte le résultat sous la forme d’un tableau json unique.

Ensuite, spécifiez simplement l’indicateur --jsonArray lors de l’importation.

Ou supprimez les crochets de début et de fin du tableau [] dans le fichier, puis votre fichier modifié et exporté importera avec la commande mongoimport sans l’indicateur --jsonArray .

Plus d’informations sur l’exportation ici: https://docs.mongodb.org/manual/reference/program/mongoexport/#cmdoption–jsonArray

Importez ici: https://docs.mongodb.org/manual/reference/program/mongoimport/#cmdoption–jsonArray

J’ai eu ce même problème, et l’exécution du script dans robomongo (Robo 3T 1.1.1) ne permet pas non plus de copier des valeurs et il n’y avait pas non plus d’option d’exportation. La meilleure façon d’y parvenir est d’utiliser mongoexport, si mongodb est installé sur votre local, vous pouvez utiliser mongoexport pour vous connecter à la firebase database sur n’importe quel serveur et extraire des données.

Pour vous connecter à Data sur le serveur distant et au fichier de sortie csv, exécutez mongoexport dans votre ligne de commande.

 mongoexport --host HOSTNAME --port PORT --username USERNAME --password "PASSWORD" --collection COLLECTION_NAME --db DATABASE_NAME --out OUTPUTFILE.csv --type=csv --fieldFile fields.txt 

fieldFile: aide à extraire les colonnes souhaitées, ex: le contenu de fields.txt peut être juste:

identifiant d’utilisateur

extraire uniquement les valeurs de la colonne ‘userId’

Données sur le serveur distant, fichier de sortie json:

 mongoexport --host HOST_NAME --port PORT --username USERNAME --password "PASSWORD" --collection COLECTION_NAME --db DATABASE_NAME --out OUTPUT.json 

cela extrait tous les champs dans le fichier json

données sur localhost (mongodb devrait être exécuté sur localhost)

 mongoexport --db DATABASE_NAME --collection COLLECTION --out OUTPUT.json 

Référence: https://docs.mongodb.com/manual/reference/program/mongoexport/#use

Un moyen rapide et sale: écrivez simplement votre requête sous le nom db.getCollection('collection').find({}).toArray() et cliquez avec le bouton droit de la souris sur Copy JSON . Collez les données dans l’éditeur de votre choix.

entrer la description de l'image ici