By example:
dev> db.survey.find()
{ "_cls" : "Survey", "_id" : ObjectId("50457507fe75bd7531268485"), "_types" : [ "Survey" ], "created" : ISODate("2012-09-04T03:27:03.161Z"), "description" : "lkjasd\r\n\r\ntext formatting", "owner" : ObjectId("503af0a3fe75bd735335a27b"), "questions" : [ { "_types" : [ "Question" ], "required" : false, "label" : "How?", "_cls" : "Question", "label_text" : "", "id" : "oLM8w83sTaXEm5RyZ6yQXNcjncn2pJHLyPFe9_7XKs", "show_other" : false, "type" : "textarea", "options" : [ ] }, { "_types" : [ "Question" ], "required" : true, "label" : "Why?", "_cls" : "Question", "label_text" : "", "id" : "gHFQdcvZB_ELF9Qp6liMwcAoX-eVDVHNAMcdDrwHCM", "show_other" : false, "type" : "text", "options" : [ ] }, { "_types" : [ "Question" ], "required" : false, "label" : "Who?", "_cls" : "Question", "label_text" : "", "id" : "2sTKV2QipESmWrP4tcXb4TmECxf5p1Tf0bOD6-zJib", "show_other" : false, "type" : "select", "options" : [ "Bananaphone", "Watman", "Yo Mama" ] }, { "_types" : [ "Question" ], "required" : false, "label" : "Testing", "_cls" : "Question", "label_text" : "", "id" : "TketUNiBTZkOJoj3K2tw74mS_l_p0bDPcIT1UeVMiI", "show_other" : false, "type" : "select", "options" : [ "one", "two", "three" ] } ], "status" : "open", "title" : "My first survey" }
{ "_cls" : "Survey", "_id" : ObjectId("5068fcbefe75bd3063635bd6"), "_types" : [ "Survey" ], "created" : ISODate("2012-10-01T02:15:26.114Z"), "description" : "Just to test another one", "owner" : ObjectId("503af0a3fe75bd735335a27b"), "questions" : [ { "_types" : [ "Question" ], "required" : false, "label" : "Why did the monkey?", "_cls" : "Question", "label_text" : "", "id" : "tH3x9-t4T_8l6KiObYKJQ-07uPiKxZNqb_q4qKqbw4", "show_other" : false, "type" : "text", "options" : [ ] }, { "_types" : [ "Question" ], "required" : false, "label" : "Why didn't the monkey?", "_cls" : "Question", "label_text" : "", "id" : "LeA-E_Sa3Tp2-dQdgJG3pk0qQy0gE-42E2fFKG6aya", "show_other" : false, "type" : "textarea", "options" : [ ] } ], "status" : "open", "title" : "My second survey" }
What a mess to try and read. How about this:
dev> db.survey.find().t()
+--------------------------+----------+--------------+-------------------------------------+---------------------------------+--------------------------+---------------------------------------------------+--------+--------------------+
| _id | _cls | _types | created | description | owner | questions | status | title |
+--------------------------+----------+--------------+-------------------------------------+---------------------------------+--------------------------+---------------------------------------------------+--------+--------------------+
| 50457507fe75bd7531268485 | "Survey" | [ "Survey" ] | ISODate("2012-09-04T03:27:03.161Z") | "lkjasd\r\n\r\ntext formatting" | 503af0a3fe75bd735335a27b | [ { "_types" : [ "Question" ], "required" : fa... | "open" | "My first survey" |
| 5068fcbefe75bd3063635bd6 | "Survey" | [ "Survey" ] | ISODate("2012-10-01T02:15:26.114Z") | "Just to test another one" | 503af0a3fe75bd735335a27b | [ { "_types" : [ "Question" ], "required" : fa... | "open" | "My second survey" |
+--------------------------+----------+--------------+-------------------------------------+---------------------------------+--------------------------+---------------------------------------------------+--------+--------------------+
Grab mongorc.js
, put it in $HOME/.mongorc.js
. Start mongo. Call .t()
on cursor
objects (e.g. the return result of find()
). You're welcome.
Improvements most welcome. Mongodb devs, plz consider something similar for upstream?
You can pass .t()
a hash with the following keys:
- limit: Limits the number of rows in the output (which defaults to 20)
- maxlen: Values longer than this will be truncated to this length, to prevent stupidly long output (default 50)
- undef: A string representing what should be shown when a value is undefined for a given document
dev> db.survey.find().t({limit: 1, maxlen: 200})
+--------------------------+----------+--------------+-------------------------------------+---------------------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+-------------------+
| _id | _cls | _types | created | description | owner | questions | status | title |
+--------------------------+----------+--------------+-------------------------------------+---------------------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+-------------------+
| 50457507fe75bd7531268485 | "Survey" | [ "Survey" ] | ISODate("2012-09-04T03:27:03.161Z") | "lkjasd\r\n\r\ntext formatting" | 503af0a3fe75bd735335a27b | [ { "_types" : [ "Question" ], "required" : false, "label" : "How?", "_cls" : "Question", "label_text" : "", "id" : "oLM8w83sTaXEm5RyZ6yQXNcjncn2pJHLyPFe9_7XKs", "show_other" : false, "type"... | "open" | "My first survey" |
+--------------------------+----------+--------------+-------------------------------------+---------------------------------+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+-------------------+
Observe that you can still pass useful things to .find()
, for example to ditch columns from the output:
dev> db.survey.find(null, {questions: 0}).t({maxlen: 200})
+--------------------------+----------+--------------+-------------------------------------+---------------------------------+--------------------------+--------+--------------------+
| _id | _cls | _types | created | description | owner | status | title |
+--------------------------+----------+--------------+-------------------------------------+---------------------------------+--------------------------+--------+--------------------+
| 50457507fe75bd7531268485 | "Survey" | [ "Survey" ] | ISODate("2012-09-04T03:27:03.161Z") | "lkjasd\r\n\r\ntext formatting" | 503af0a3fe75bd735335a27b | "open" | "My first survey" |
| 5068fcbefe75bd3063635bd6 | "Survey" | [ "Survey" ] | ISODate("2012-10-01T02:15:26.114Z") | "Just to test another one" | 503af0a3fe75bd735335a27b | "open" | "My second survey" |
+--------------------------+----------+--------------+-------------------------------------+---------------------------------+--------------------------+--------+--------------------+