I want to save the result from an aggregation into a csv file.
Using the mongo cmd line tool I can do this to get the results I want:
db.compras.aggregate({ $group : { _id : "$data.proponente", total : { $sum : "$price" } }}
How would I translate this into a mongoexport command that saves results into a csv?
Slightly simpler option as of 2.6+ is to now add an $out
step to your aggregate to put the results into a collection:
db.collection.aggregate( [ { aggregation steps... }, { $out : "results" } ] )
Then just use mongoexport
as:
mongoexport -d database -c results -f field1,field2,etc --csv > results.csv
After that you might want to delete the temporary collection from the database so that it does not keep using unnecessary resources, and also to avoid confusion later, when you have forgotten why this collection exists in your database.
db.results.drop()
You can export to a CSV file with the following 3 steps:
Assign your aggregation results to a variable (reference):
var result = db.compras.aggregate({ $group : { _id : "$data.proponente", total : { $sum : "$price" } }}
Insert a value of the variable to a new collection:
db.bar.insert(result.toArray());
In terminal (or command line) export this bar collection to a CSV file:
mongoexport -d yourdbname -c bar -f _id,total --csv > results.csv
...and you're done :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With