MongoDBのシェルで20を超えるアイテム(ドキュメント)を印刷するにはどうすればよいですか?


253
db.foo.find().limit(300)

それはしません。それでも、20ドキュメントしか印刷されません。

db.foo.find().toArray()
db.foo.find().forEach(printjson)

どちらも、の1行バージョンではなく、各ドキュメントの非常に拡大されたビューを印刷しますfind()


デフォルトでは、mongoシェルは最初の20ドキュメントのみを印刷しますType it。シェルに入力することで、次のバッチ20ドキュメントを取得できます。等々。
roottraveller

回答:


381

1
これを持続させる方法はありますか?
Lukasz Wiktor 2016年

7
@LukaszWiktorはい、$ HOME / .mongorc.jsファイルを作成して、そのshellBatchSize設定をそこに配置できます。私のクエリバッチサイズ設定と有効になっているrs.slaveOk()があります。コマンドラインで--evalを使用する場合も、使用方法は少し異なります。参照:docs.mongodb.com/manual/mongo/#mongorc-js-file
matias elgart

1
それは素晴らしいことです!ありがとう@matiaselgart
Lukasz Wiktor

リンクは古くなっており、そのような情報は含まれていません。また、これを環境変数として渡すことはできますか?
phil294

157

シェルからすべての結果を表示したい場合は、シェルdb.collection.find().toArray()なしですべての結果を取得できます。


この。すべてをシェルに入れてカットアンドペーストできるようにする場合は、これで十分です。
superluminary

これはより便利です
anwerj 2017

これはまさに私のためにやったことです。真実は、私がRobomongoの出力からすべての結果を保存する方法が必要だったということです。ありがとうございました!
アンドレス・ボテロ

これはすばらしいことであり、結果をjqにパイプすることもできます:)
Omer van Kloeten 2017

完璧なソリューション!これはとても便利です。
coderpc

93

itシェルの内部を使用して、次の20件の結果を反復処理できます。it「もっと多い」と表示されたら入力するだけで、次の20項目が表示されます。


35
ああ、それはすべて使用せずに印刷する方法について実際にあるit
nonopolarity

15
ハーフダンのおかげで、ユーザー名が2倍になりました。
cassi.lup 2013

6
全体のアイデアはイテレータを使用することではありません
Amir Kost

2
これはOPが回避したかったことです(これがデフォルトの動作です)。
製作者2017

41

常に行うことができます:

db.foo.find().forEach(function(f){print(tojson(f, '', true));});

そのコンパクトなビューを取得します。

また、findによって返されるフィールドを制限すると非常に便利です。

db.foo.find({},{name:1}).forEach(function(f){print(tojson(f, '', true));});

これは、fooから_idおよびnameフィールドのみを返します。


1
シェルスクリプト(mongo client with --eval)で実行できるため、この方法が好きです
Zheng Kai

1
@ZhengKaiスクリプトを使用していてシェルで使用していない場合、結果はシェルによって反復されないため、shellBatchSizeは関係ありません。自分で行う必要があります。
Asya Kamsky 2013年

tojson()は、DBQueryから変換するためにまさに探していたものでした。ありがとうございました!
マークPieszak-Trilon.io 15年

4

~/.mongorc.js毎回デフォルトサイズを設定する必要がないように、ファイルを用意することをお勧めします。

 # execute in your terminal
 touch ~/.mongorc.js
 echo 'DBQuery.shellBatchSize = 100;' > ~/.mongorc.js
 # add one more line to always prettyprint the ouput
 echo 'DBQuery.prototype._prettyShell = true; ' >> ~/.mongorc.js

他に何ができるかについて詳しく知るには、次の記事をご覧になることをお勧めします。http//mo.github.io/2017/01/22/mongo-db-tips-and-tricks.html


0

mongoシェルでは、返されたカーソルがvarキーワードを使用して変数に割り当てられていない場合、クエリに一致する最初の20個までのドキュメントにアクセスするために、カーソルが自動的に反復されます。DBQuery.shellBatchSize変数を設定して、自動的に反復されるドキュメントの数を変更できます。

リファレンス-https://docs.mongodb.com/v3.2/reference/method/db.collection.find/

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