如何在MongoDB'中打印20多个项目(文档);贝壳是什么?

如何在MongoDB'中打印20多个项目(文档);贝壳是什么?,mongodb,Mongodb,我不会这么做的。它仍然只打印出20份文件 db.foo.find().limit(300) 都将打印出每个文档的非常扩展的视图,而不是find():的单行版本。您可以在shell内部使用it来迭代接下来的20个结果。只要键入it,如果您看到“hasemore”,您将看到接下来的20个项目 DBQuery.shellBatchSize=300 行 如果要显示所有结果,可以执行db.collection.find().toArray()来获取所有结果,而不使用它。始终可以执行以下操作: db.fo

我不会这么做的。它仍然只打印出20份文件

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

都将打印出每个文档的非常扩展的视图,而不是
find()

的单行版本。您可以在shell内部使用
it
来迭代接下来的20个结果。只要键入
it
,如果您看到“hasemore”,您将看到接下来的20个项目

DBQuery.shellBatchSize=300


如果要显示所有结果,可以执行
db.collection.find().toArray()
来获取所有结果,而不使用它。

始终可以执行以下操作:

db.foo.find().toArray()
db.foo.find().forEach(printjson)
以获得紧凑的视图

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

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

它将只从mongo shell中的foo.

返回_id和name字段,如果返回的游标没有使用var关键字分配给变量,游标将自动迭代以访问与查询匹配的前20个文档。您可以设置DBQuery.shellBatchSize变量来更改自动迭代文档的数量

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

参考-

我建议您使用
~/.mongorc.js
文件,这样您就不必每次都设置默认大小

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

要了解更多关于你还能做什么的信息,我建议你看看这篇文章:

哦,这真的是关于如何不用
it
打印出所有内容的问题,谢谢哈夫丹,你的用户名显示你是原来的两倍!我的想法是不要使用iteratorI downvoted,因为这是OP想要避免的(这是默认行为)。我喜欢这种方式,因为它可以在shell脚本中运行(mongo client with
--eval
)@ZhengKai如果您使用的是脚本而不是shell,那么shellBatchSize与此无关,因为shell不会对您的结果进行迭代,您必须自己完成。tojson()正是我想要从DBQuery转换它的东西谢谢!有没有办法让它持久化?@LukaszWiktor是的,您可以创建一个$HOME/.mongorc.js文件,并将shellBatchSize设置放在其中。mine已启用查询批量大小设置和rs.slaveOk()。当通过命令行使用--eval时,它的用法也略有不同。看:太好了!谢谢@matiaselgart该链接已过时,不包含此类信息。另外,我可以将其作为环境变量传递吗?如果您想从命令shell运行此命令,可以这样做:
mongo--eval“DBQuery.shellBatchSize=100;db.foo.find()”
this。如果你只是想把它们都装在一个壳里,这样你就可以剪切和粘贴了,这就足够了。这一个更有用这正是我做的。说实话,我只是需要一种方法来保存机器人输出的所有结果。非常感谢。这太棒了,它还让我将结果通过管道传递给jq:)Awesome与Tee一起进行快速导出:
mongo | Tee./myOutput.txt默认情况下mongo shell只打印前20个文档,您可以通过在shell中键入
来获得下一批20个文档。等等