默认在 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 中打印漂亮的主要内容,如果未能解决你的问题,请参考以下文章

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

如何从命令行漂亮地打印 XML?

漂亮地打印整个 Pandas 系列/DataFrame

怎样在linux的shell脚本中连接mongodb插入

怎样在linux的shell脚本中连接mongodb插入

使用 Hibernate OGM 的 MongoDb 身份验证