默认在 MongoDB shell 中打印漂亮
Posted
技术标签:
【中文标题】默认在 MongoDB shell 中打印漂亮【英文标题】:Pretty print in MongoDB shell as default 【发布时间】:2012-02-27 02:27:15 【问题描述】:有没有办法告诉 Mongo 漂亮的打印输出?目前,所有内容都输出到一行,难以阅读,尤其是嵌套数组和文档。
【问题讨论】:
现在:如何从加载到 Mongo 的外部 javascript 打印它? @WitoldKaczurba 尝试搜索您的问题的答案。如果您没有找到答案,请继续将其作为新问题发布。 如果您想使用 MongoDB 和 Ruby on Rails 进行彩色输出和漂亮的日志记录,您可以查看 github.com/ibraheemdev/mongo_beautiful_logger 【参考方案1】:(注意:这是对问题原始版本的回答,对“默认”没有要求)
你可以要求它漂亮。
db.collection.find().pretty()
【讨论】:
如果您想要彩色输出+其他增强功能,请查看github.com/TylerBrock/mongo-hacker@SAFX 现在:如何从加载到 Mongo 的外部 javascript 打印它?这行不通...【参考方案2】:你可以添加
DBQuery.prototype._prettyShell = true
到$HOME/.mongorc.js
中的文件,默认启用全局漂亮打印。
【讨论】:
您需要创建一个自定义函数来为您禁用它。将此添加到您的$HOME/.mongorc.js
: gist.github.com/mathrawka/6239405 然后您可以执行类似 db.users.find().ugly() 之类的操作来获得它而无需漂亮的打印。
+1 这很棒。对于那些在 $HOME 文件夹中没有 .mongorc.js 文件的人;您可以创建此文件并在其中添加命令。重新启动 shell 后,它就可以工作了!
如何在 cli 或 mongo shell 中验证此选项已启用?我的意思是,是否有一个特殊的命令,比如mongo --checkConf 'pretty'
,而不是通过调用db.collection.find().limit(1)
@staackuser2,该链接似乎已损坏:(
如果默认设置为 true 就好了【参考方案3】:
(注意:这是对更新问题的回答)
您可以在 CLI 上执行此操作:
echo DBQuery.prototype._prettyShell = true >> ~/.mongorc.js
而且它总是会输出漂亮的结果。
【讨论】:
这对我来说非常有效。 | MongoDB shell 版本:2.6.7 和 Oh-My-Zsh version e55c715【参考方案4】:由于它基本上是一个javascript shell,你也可以使用toArray()
:
db.collection.find().toArray()
但是,这将打印集合的所有文档,这与允许您迭代的pretty()
不同。
参考:http://docs.mongodb.org/manual/reference/method/cursor.toArray/
【讨论】:
有趣的是,从控制台中,.toArray()
函数输出的 JSON 格式比 .pretty()
函数更好。即:我收藏的第一条记录与其他记录不同(这可能是问题所在),但.pretty()
将其转储为 "_id" : "VERSION", "v" : "1.5"
- 全部在一条线上,其中.toArray()
的格式与其他记录一样好记录..【参考方案5】:
哦,所以我猜 .pretty() 等于:
db.collection.find().forEach(printjson);
【讨论】:
【参考方案6】:试试 Mongo-hacker(节点模块),它总是打印得很漂亮。 https://github.com/TylerBrock/mongo-hacker
它增强了mongo shell(仅支持ver>2.4,当前版本为3.0),如
着色 其他 shell 命令(计数文档/计数文档/等) API 添加(db.collection.find( ... ).last()、db.collection.find( ... ).reverse() 等) 聚合框架我在生产环境中使用了一段时间,还没有问题。
【讨论】:
如果我没有mongodb,只安装了meteor怎么办? 注意:当你使用 npm 安装 mongo-hacker 时,它显然会覆盖$HOME/.mongorc.js
。【参考方案7】:
解决了这个问题,但无法弄清楚如何从外部加载的 mongo 打印它。所以:
这适用于控制台: 并且在控制台中是首选,但不适用于外部 mongo 加载的 javascript:
db.quizes.find().pretty()
这适用于外部 mongo 加载的 javscript:
db.quizes.find().forEach(printjson)
【讨论】:
【参考方案8】:看看这个:
db.collection.find().pretty()
【讨论】:
以上是关于默认在 MongoDB shell 中打印漂亮的主要内容,如果未能解决你的问题,请参考以下文章