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

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

不行,还是只能打印出20份文件。

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

将打印每个文件的非常扩展的视图,而不是 find()的单行版本:

177577 次浏览

你可以在shell中使用it来迭代接下来的20个结果。如果你看到“has more”,只需输入it,你会看到接下来的20项。

DBQuery.shellBatchSize = 300

MongoDB Docs - Configure the mongo Shell - Change the mongo Shell Batch Size . bb0 MongoDB Docs - Configure the mongo Shell - Change the mongo Shell Batch Size

从shell中可以使用:

db.collection.find().toArray()

来显示所有文档,而不必使用it

总是可以做:

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字段。

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

引用- https://docs.mongodb.com/v3.2/reference/method/db.collection.find/

我建议你有一个~/.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

show dbs

使用您的数据库名称 在我的例子中,我使用- use smartbank 然后- show collections -只是检查文档集合的名称。 最后,db.你的集合名称__abc1或find({}) -

show dbs


use smartbank


show collections


db.users.find() or db.users.find({}) or db.users.find({_id: ObjectId("60c8823cbe9c1c21604f642b")}) or db.users.find({}).limit(20)

你可以指定_id:ObjectId(在这里写入文档id)来获取单个文档

或者你可以指定limit - db.users.find({}).limit(20)

enter image description here

在mongo shell (mongosh)的新版本中,使用以下语法:

config.set("displayBatchSize", 300)

而不是贬值:

DBQuery.shellBatchSize = 300

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