シェルはインタラクティブな環境であるため、いくつかの優れた機能を提供します。
javascriptファイルからmongocommands.jsを介してコマンドを実行すると、まったく同じ動作は得られません。
これを回避するには2つの方法があります。
(1)シェルを偽造して、インタラクティブモードになっていると思わせる
$ mongo dbname << EOF > output.json
db.collection.find().pretty()
EOF
または
(2)Javascriptを使用してfind()
の結果を変換します 印刷可能なJSONに
mongo dbname command.js > output.json
ここで、command.jsにはこれ(または同等のもの)が含まれています:
printjson( db.collection.find().toArray() )
これにより、[ ]
を含む結果の配列がきれいに出力されます。 -必要がない場合は、配列とprintjson()
を反復処理できます。 各要素。
ちなみに、Javascriptステートメントを1つだけ実行している場合は、それをファイルに入れる必要はなく、代わりに次を使用できます。
$ mongo --quiet dbname --eval 'printjson(db.collection.find().toArray())' > output.json