デフォルトでMongoDBシェルにきれいに印刷する


516

Mongoに出力をきれいに印刷するように指示する方法はありますか?現在、すべてが1行に出力されており、特にネストされた配列やドキュメントの場合は読みにくいです。


さて、Mongoに読み込まれた外部JavaScriptからどのように印刷しますか?
Witold Kaczurba

@WitoldKaczurba質問の答えを検索してみてください。答えが見つからない場合は、新しい質問として投稿してください。
MForMarlon

回答:


868

注:これは質問の元のバージョンへの回答であり、「デフォルト」の要件はありませんでした

あなたはそれがきれいになるように頼むことができます。

db.collection.find().pretty()

18
カラー化された出力が必要な場合+その他の拡張機能github.com/TylerBrock/mongo-hacker @SAFXをチェックしてください
Ryan Schumacher

さて、Mongoに読み込まれた外部JavaScriptからどのように印刷しますか?これは機能しません...
Witold Kaczurba

416

あなたは付け加えられます

DBQuery.prototype._prettyShell = true

$HOME/.mongorc.jsデフォルトでグローバルにきれいに印刷できるようにするためにファイルに追加します。


13
あなたはあなたのためにそれを無効にするカスタム関数を作りたいと思うでしょう。これをあなたのgist.github.com/mathrawka/6239405に追加してください$HOME/.mongorc.js。 次に、db.users.find()。ugly()などを実行して、きれいに印刷せずに取得できます。
staackuser2 2013

5
+1これは素晴らしいことです。$ HOMEフォルダーに.mongorc.jsファイルがない場合。このファイルを作成してコマンドを追加できます。シェルを再起動すると、動作します!
previous_developer

このオプションが有効になっていることをcliまたはmongoシェルで確認するにはどうすればよいですか?つまり、mongo --checkConf 'pretty'電話ではなく、のような特別なコマンドがありますかdb.collection.find().limit(1)
Green

1
@ staackuser2、そのリンクは壊れているようです:(
micseydel

質問が指摘されているので、これは受け入れられる答えである必要があります。これをデフォルトのオプションにする方法。ユーザーはすでに.pretty()メソッドに慣れていますが、毎回書きたくありません
Ariel Monaco

54

(注:これは更新された質問に対する回答です)

あなたはCLIでこれを行うことができます:

echo DBQuery.prototype._prettyShell = true >> ~/.mongorc.js

そして、それは常にきれいな結果を出力するでしょう。


1
これは完璧に機能しました。| MongoDBシェルバージョン:2.6.7およびOh-My-Zsh バージョンe55c715
tjfwalker

20

基本的にjavascriptシェルなので、次のコードも使用できますtoArray()

db.collection.find().toArray()

ただし、これはコレクションのすべてのドキュメントを印刷pretty()するため、繰り返し処理を行うことができません。参照:http : //docs.mongodb.org/manual/reference/method/cursor.toArray/


2
興味深いことに、.toArray()関数はコンソールから、関数よりも適切にフォーマットされたJSONを出力し.pretty()ます。すなわち:私のコレクションの最初のレコードは、(問題がある可能性があります)残りの部分よりも異なっているが、.pretty()としてそれをダンプします{ "_id" : "VERSION", "v" : "1.5" }- 1本のライン、上のすべての.toArray()レコードの残りの部分のような素敵な、それをフォーマットし...
wasatchwizard

17

ああ、そうです.pretty()は次と等しいと思います:

db.collection.find().forEach(printjson);

8

Mongo-hacker(ノードモジュール)を試してみてください。 https://github.com/TylerBrock/mongo-hacker

さらに、mongoシェルを拡張します(ver> 2.4のみをサポートし、現在のverは3.0です)。

  • 着色
  • 追加のシェルコマンド(ドキュメントのカウント/ドキュメントのカウント/ etc)
  • APIの追加(db.collection.find({...})。last()、db.collection.find({...})。reverse()など)
  • 集約フレームワーク

私は本番環境でしばらく使用していますが、まだ問題はありません。


mongodbがなく、流星をインストールしただけの場合はどうなりますか?
pihentagy

注:npmを使用してmongo-hackerをインストールすると、明らかにが上書きされます$HOME/.mongorc.js
Hubro

1

質問に行きましたが、外部からロードされたモンゴからそれを印刷する方法を理解できませんでした。そう:

これはコンソール用であり、コンソールで優先されますが、mongoがロードされた外部JavaScriptでは機能しません。

db.quizes.find().pretty()

これは、mongoをロードした外部のJavaScriptで機能します。

db.quizes.find().forEach(printjson)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.