2012-01-20 12 views
5

-f [--fields] arg elenco di nomi di campi separati da virgola es. -f nome, l'età

  • c'è un modo per ottenere l'intera collezione come l'utilizzo di discarica, ma non in formato BSON?
  • ho bisogno di dati CSV

Grazie

+0

mongodb non ha comandi di esportazione per il dump CSV? Ancora oggi, il 2015? –

risposta

0

Si potrebbe creare un file con i nomi dei campi (può essere più facile per voi):

--fieldFile arg   file with fields names - 1 per line 

Nel tuo caso potrebbero essere tutti lo stesso, ma il motivo per cui devi specificare i nomi dei campi è perché potrebbero essere diversi per ogni documento, ma i nomi dei campi in csv devono essere corretti.

10

In bash è possibile creare questa immagine "export-all-collections-to-csv.sh" e passare il nome del database come unico argomento (sentitevi liberi di ridurre questo ad una singola collezione):

OIFS=$IFS; 
IFS=","; 

dbname=$1 #put "database name" here if you don't want to pass it as an argument 

collections=`mongo $dbname --eval "rs.slaveOk();db.getCollectionNames();" --quiet`; 
collectionArray=($collections); 

for ((i=0; i<${#collectionArray[@]}; ++i)); 
do 
    keys=`mongo $dbname --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.findOne()) { keys.push(key); }; keys;" --quiet`; 
    mongoexport --db $dbname --collection ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv; 
done 

IFS=$OIFS; 
Problemi correlati