【问题标题】:Pretty print in MongoDB shell as default默认在 MongoDB shell 中打印漂亮
【发布时间】:2012-02-27 02:27:15
【问题描述】:

有没有办法告诉 Mongo 漂亮的打印输出?目前,所有内容都输出到一行,难以阅读,尤其是嵌套数组和文档。

【问题讨论】:

  • 现在:如何从加载到 Mongo 的外部 javascript 打印它?
  • @WitoldKaczurba 尝试搜索您的问题的答案。如果您没有找到答案,请继续将其作为新问题发布。
  • 如果您想使用 MongoDB 和 Ruby on Rails 进行彩色输出和漂亮的日志记录,您可以查看 github.com/ibraheemdev/mongo_beautiful_logger

标签: mongodb command-line-interface mongo-shell


【解决方案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()
      

      【讨论】:

        猜你喜欢
        • 2013-06-19
        • 1970-01-01
        • 2011-03-23
        • 1970-01-01
        • 2010-09-26
        • 2012-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多