How to print out more than 20 items (documents) in MongoDB's shell?

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

won't do it. It still prints out only 20 documents.

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

will both print out very expanded view of each document instead of the 1-line version for find():

8 Answers

With newer version of mongo shell (mongosh) use following syntax:

config.set("displayBatchSize", 300)

instead of depreciated:

DBQuery.shellBatchSize = 300

Future find() or aggregate() operations will only return 300 documents per cursor iteration.

I suggest you to have a ~/.mongorc.js file so you do not have to set the default size everytime.

 # 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

To know more about what else you can do, I suggest you to look at this article: http://mo.github.io/2017/01/22/mongo-db-tips-and-tricks.html

show dbs

use your database name in my case, I'm using - use smartbank then - show collections - just to check the document collections name. and finally, db. your collection name.find() or 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)

you can specify _id:ObjectId(write the document id here) to get the single document

or you can specify limit - db.users.find({}).limit(20)

enter image description here

Related