ChatGPT解决这个技术问题 Extra ChatGPT

默认在 MongoDB shell 中打印漂亮

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

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

S
Sergio Tulentsev

(注意:这是对问题原始版本的回答,对“默认”没有要求)

你可以要求它漂亮。

db.collection.find().pretty()

如果您想要彩色输出 + 其他增强功能,请查看 github.com/TylerBrock/mongo-hacker @SAFX
现在:如何从加载到 Mongo 的外部 javascript 中打印它?这行不通...
S
Sergio Tulentsev

你可以加

DBQuery.prototype._prettyShell = true

$HOME/.mongorc.js 中的文件以默认启用全局漂亮打印。


您需要创建一个自定义功能来为您禁用它。将此添加到您的 $HOME/.mongorc.jsgist.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,那就太好了
S
Sergio Tulentsev

(注意:这是对更新问题的回答)

您可以在 CLI 上执行此操作:

echo DBQuery.prototype._prettyShell = true >> ~/.mongorc.js

它总是会输出漂亮的结果。


这对我来说非常有效。 | MongoDB shell 版本:2.6.7 和 Oh-My-Zsh version e55c715
A
Aafreen Sheikh

由于它基本上是一个 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() 将其格式化为与其他记录一样好记录..
G
Goff

哦,所以我猜 .pretty() 等于:

db.collection.find().forEach(printjson);

G
Gaurav Gandhi

试试 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
W
Witold Kaczurba

遇到了问题,但无法弄清楚如何从外部加载的 mongo 打印它。所以:

这适用于控制台:并且在控制台中是首选,但在外部 mongo 加载的 javascript 中不起作用:

db.quizes.find().pretty()

这适用于外部 mongo 加载的 javscript:

db.quizes.find().forEach(printjson)

M
Mohammad Heydari

看一下这个:

db.collection.find().pretty()