web-dev-qa-db-fra.com

Comment exporter un json de Mongodb en utilisant robomongo

Je ne connais donc pas grand chose à propos de MongoDB. J'ai RoboMongo avec lequel je me connecte à une MongoDB. Voici ce que je dois faire. Il existe une collection dans cette MongoDB. Je souhaite exporter les données de cette collection afin de pouvoir les enregistrer dans un fichier.

J'ai utilisé l'interface pour ouvrir les données de la collection sous forme de texte et ai fait un CTRL + A et collé dans un fichier texte. Cependant, j’ai constaté que toutes les données n’étaient pas copiées et qu’il y avait de nombreux commentaires dans les données de texte, ce qui casse naturellement le JSON.

Je me demande si RoboMongo a une installation Export As JSON afin que je puisse faire une exportation propre. 

Tous les indicateurs sont appréciés!

81
Undefined Variable

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

Exécutez ce script dans RoboMongo:

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

Ceci affiche tous les résultats sous forme de tableau de type JSON.

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

Peut-être pas très efficace pour les grands ensembles de résultats, mais vous pouvez limiter la requête. Alternativement, vous pouvez utiliser mongoexport .

43
Florian Winter

La fonctionnalité Shell de Robomongo résoudra le problème. Dans mon cas, j'avais besoin de quelques colonnes comme 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
20
Anish Abraham

Il existe quelques interfaces graphiques MongoDB, dont certaines prennent en charge l’exportation de données. Vous trouverez une liste complète des interfaces graphiques MongoDB à l’adresse http://mongodb-tools.com

Vous avez posé une question sur l'exportation des résultats de votre requête et non sur l'exportation de collections entières. Donnez 3T MongoChef MongoDB GUI a essayer, cet outil prend en charge votre cas d'utilisation spécifique.

18
Tomek

N'exécutez pas cette commande sur Shell, entrez ce script à l'invite de commande avec le nom de votre base de données, le nom de la collection et le nom du fichier, en remplaçant tous les espaces réservés.

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

Ça marche pour moi.

9
Yogesh Nikam Patil

Une méthode rapide et simpliste: écrivez simplement votre requête sous la forme db.getCollection('collection').find({}).toArray() et cliquez-droit sur Copy JSON Collez les données dans l'éditeur de votre choix.

 enter image description here

7
öbl

vous dites "exporter dans un fichier" comme dans un tableur? Vous aimez un .csv?

IMO c'est la manière la plus facile de le faire dans Robo 3T (anciennement robomongo):

  1. En haut à droite de l'interface graphique de Robo 3T, un bouton "Afficher les résultats en mode texte ", Cliquez dessus et copiez le tout.

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

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

j'espère que cela aidera quelqu'un, car j'aimerais que Robo 3T ait des capacités d'exportation

7
russiansummer

Je ne pense pas que robomongo ait une telle fonctionnalité .. donc il vaut mieux utiliser la fonction mongodb en tant que 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
7
henrily

En développant la réponse d'Anish, je voulais quelque chose que je puisse appliquer à toute 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 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.substring(0, output.length - 1);
    print(output);
}
5
Mark Shust

Si vous voulez utiliser mongoimport , vous voudrez exporter de cette façon:

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

Utilisation d'un script robomongo Shell:

//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 ajouter le paramètre/indicateur --jsonArray à votre commande mongoexport pour exporter le résultat sous forme de tableau json unique. 

Ensuite, spécifiez simplement le drapeau --jsonArray lors de l'importation. 

Ou supprimez les crochets de tableau de début et de fin [] dans le fichier. Votre fichier modifié et exporté sera importé avec la commande mongoimport sans l'indicateur --jsonArray.

Plus d'informations sur Export ici: https://docs.mongodb.org/manual/reference/program/mongoexport/#cmdoption--jsonArray

Importer ici: https://docs.mongodb.org/manual/reference/program/mongoimport/#cmdoption--jsonArray

2
Herald Smit

J'ai eu le 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 réseau local, vous pouvez utiliser mongoexport pour vous connecter à une base de données sur n’importe quel serveur et extraire des données.

Pour vous connecter aux données sur le serveur distant et au fichier de sortie csv, exécutez le fichier mongoexport suivant 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 désiré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 du fichier json

données sur localhost (mongodb devrait fonctionner sur localhost)

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

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

1
Venkata Buddhiraju

Solution:
mongoexport --db test --collection traffic --out traffic.json

 enter image description here


où, 
base de données -> mock-server
nom de la collection -> api_defs
nom du fichier de sortie -> childChoreRequest.json

0
amoljdv06