2015-08-10 1 views
1

Je suis à la recherche de comment exporter un résultat de requête de mongo vers CVS ou Excel, ou comment exporter des résultats dans robomongo. J'ai trouvé mongoexport mais je pense que seulement peut exporter une collection avec quelques contraintes simples.Comment exporter une requête spécifique dans mongo à csv?

C'est ma requête:

db.getCollection('user').find({ "coins": { $elemMatch: { "id":"30","amount":0} } }) 

Répondre

7

Pour MongoDB 3.0+, vous pouvez spécifier la requête dans mongoexport utilisant -q et --type Options:

mongoexport -d test -c user -q '{ coins: { $elemMatch: { "id":"30","amount":0}}}' --type=csv --out exportdir/myRecords.json 

Pour les versions antérieures, utilisez l'option --csv avec les champs d'en-tête:

mongoexport -d test -c user -q '{ coins: { $elemMatch: { "id":"30","amount":0}}}' --csv -f first_name,last_name,title --out exportdir/myRecords.json 
+0

ne peut pas utiliser mongoexport dans ce cas car les données sont profondes, par exemple la couleur de la colonne est rouge, bleu, jaune .. d'autres sont similaires. mongoexport undestand qui est pour les lignes simples (une couleur, pas de tableaux). –

4

Vous pouvez utiliser forEach pour parcourir chaque résultat et une fonction pour les formater. Quelque chose comme:

db.getCollection('user').find({ "coins": { $elemMatch: { "id":"30","amount":0} } }) 
.forEach(function(u){ 

    print('"' + u._id + '","' + u.amount + '"'); 

}); 

Ensuite, envoyez simplement la sortie dans un fichier.

+0

Ben, comment puis-je "envoyer la sortie dans un fichier"? – PostureOfLearning

+0

@PostureOfLearning enregistrer votre script en tant que fichier js script.js 'mongo test script.js> out.csv' –