Is there a way to tell Mongo to pretty print output? Currently, everything is output to a single line and it's difficult to read, especially with nested arrays and documents.
(note: this is answer to original version of the question, which did not have requirements for "default")
You can ask it to be pretty.
db.collection.find().pretty()
You can add
DBQuery.prototype._prettyShell = true
to your file in $HOME/.mongorc.js
to enable pretty print globally by default.
$HOME/.mongorc.js
: gist.github.com/mathrawka/6239405 Then you can do something like db.users.find().ugly() to get it without pretty print.
mongo --checkConf 'pretty'
, not by calling db.collection.find().limit(1)
(note: this is answer to the updated question)
You can just do this on the CLI:
echo DBQuery.prototype._prettyShell = true >> ~/.mongorc.js
And it's always going to output pretty results.
Since it is basically a javascript shell, you can also use toArray()
:
db.collection.find().toArray()
However, this will print all the documents of the collection unlike pretty()
that will allow you to iterate. Refer: http://docs.mongodb.org/manual/reference/method/cursor.toArray/
.toArray()
function outputs better formatted JSON than the .pretty()
function. ie: The first record of my collection is different than the rest (which may be the problem), but .pretty()
dumps it out as { "_id" : "VERSION", "v" : "1.5" }
- all on one line, where .toArray()
formatted it nice like the rest of the records..
Oh so i guess .pretty() is equal to:
db.collection.find().forEach(printjson);
Give a try to Mongo-hacker(node module), it alway prints pretty. https://github.com/TylerBrock/mongo-hacker
More it enhances mongo shell (supports only ver>2.4, current ver is 3.0), like
Colorization
Additional shell commands (count documents/count docs/etc)
API Additions (db.collection.find({ ... }).last(), db.collection.find({ ... }).reverse(), etc)
Aggregation Framework
I am using for while in production env, no problems yet.
$HOME/.mongorc.js
.
Got to the question but could not figure out how to print it from externally-loaded mongo. So:
This works is for console: and is prefered in console, but does not work in external mongo-loaded javascript:
db.quizes.find().pretty()
This works in external mongo-loaded javscript:
db.quizes.find().forEach(printjson)
Check this out:
db.collection.find().pretty()
Success story sharing