1. ホーム
  2. javascript

[解決済み] MongoDB のシェル出力をファイルに 'pretty' 出力する方法はありますか?

2022-11-08 16:35:27

質問

具体的には、私はmongodbの結果を表示したいのですが find() の結果をファイルに出力したいのです。JSONオブジェクトが大きすぎるため、シェルのウィンドウサイズでオブジェクト全体を表示することができません。

どのように解決するのですか?

シェルは対話的な環境であるため、いくつかの素晴らしい、しかし隠れた機能を提供します。

javascriptファイルからmongo commands.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