如何在MongoDB的shell中打印出20多个项目(文档)?

nop*_*ole 243 mongodb

db.foo.find().limit(300)
Run Code Online (Sandbox Code Playgroud)

不会这样做.它仍然只打印出20个文档.

db.foo.find().toArray()
db.foo.find().forEach(printjson)
Run Code Online (Sandbox Code Playgroud)

将打印出每个文档的非常扩展的视图而不是1行版本find():

Thi*_*ilo 367

DBQuery.shellBatchSize = 300

会做.

MongoDB文档 - mongo Shell入门 - 执行查询

  • @LukaszWiktor是的,你可以创建一个$ HOME/.mongorc.js文件并将那个shellBatchSize设置放在那里.我的查询批量大小设置和rs.slaveOk()启用.当通过命令行使用--eval时,它的用法也略有不同.请参阅:https://docs.mongodb.com/manual/mongo/#mongorc-js-file (6认同)
  • 如果你想从命令 shell 运行它,你可以这样做:`mongo --eval "DBQuery.shellBatchSize = 100; db.foo.find()"` (2认同)

小智 148

如果你想显示所有结果,你可以从shell db.collection.find().toArray()获得所有结果,如果没有它.


hal*_*dan 94

您可以it在shell内部使用迭代接下来的20个结果.it如果您看到"有更多",只需键入,您将看到接下来的20个项目.

  • 哦它真的是关于如何打印出所有而不使用`it` (31认同)
  • 谢谢halfdan,你的用户名是你的两倍! (14认同)
  • 整个想法不是使用迭代器 (4认同)
  • 我拒绝投票是因为这是OP想要避免的(这是默认行为)。 (2认同)

Wil*_*vel 37

可以随时做:

db.foo.find().forEach(function(f){print(tojson(f, '', true));});
Run Code Online (Sandbox Code Playgroud)

获得紧凑的视图.

另外,我发现限制find返回的字段非常有用:

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

这将只从foo返回_id和name字段.


sev*_*ven 18

对于较新版本的 mongo shell (mongosh),请使用以下语法:

config.set("displayBatchSize", 300)
Run Code Online (Sandbox Code Playgroud)

而不是折旧:

DBQuery.shellBatchSize = 300
Run Code Online (Sandbox Code Playgroud)

未来的 find() 或aggregate() 操作每次游标迭代将仅返回 300 个文档。


Sah*_*dhi 7

我建议你有一个~/.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
Run Code Online (Sandbox Code Playgroud)

要了解更多关于你还能做什么,我建议你看这篇文章:http : //mo.github.io/2017/01/22/mongo-db-tips-and-tricks.html


N.M*_*deh 6

DBQuery.shellBatchSize 已被弃用,您需要使用另一个命令来代替这个名为 的命令config.set("displayBatchSize")

\n

例子:

\n
config.set("displayBatchSize", 300)\n
Run Code Online (Sandbox Code Playgroud)\n

使用 API \xe2\x80\x94 MongoDB Shell 配置设置

\n