MongoDBでmongoexportを使ってcsvとして出力する場合、
mongoexport -d dbname -c collectionA -out files.csv --csv --fields field1,filed2, field3
のようにフィールド名を指定しなければなりません。
ドキュメント内のフィールドは固定ではありませんが、CSVのフィールドは固定されているためです。
もしフィールドが沢山あり、そのすべてを出力したい場合どうすればいいのか。
outputCsv.sh
IFS=$IFS;
IFS=",";
dbname="dbname";
user="admin";
password="admin";
keys=`mongo -u $user -p $password $dbname --eval "rs.slaveOk();var keys = []; for(var key in db.collectionA.findOne()) { keys.push(key); }; keys;" --quiet`;
mongoexport -u $user -p $password --db $dbname --collection collectionA --fields "$keys" --csv --out file.csv;
IFS=$OIFS;
このスクリプトを実行すれば、すべてのフィールドが出力されます。