在MongoDB shell中将漂亮打印设置为默认选项

573

有没有一种方法可以告诉Mongo输出时进行漂亮的打印?目前,所有内容都输出为单行,尤其是对于嵌套的数组和文档,阅读起来很困难。


现在问题来了:如何从加载到Mongo的外部JavaScript中打印它? - Witold Kaczurba
@WitoldKaczurba 请尝试搜索您问题的答案。如果找不到答案,请发布一个新问题。 - MForMarlon
如果你想要MongoDB和Ruby on Rails的彩色输出和美观的日志记录,可以查看https://github.com/ibraheemdev/mongo_beautiful_logger - Ibraheem Ahmed
8个回答

951

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

你可以要求它更漂亮。

db.collection.find().pretty()

19
如果您想要输出彩色化和其他增强功能,请查看 https://github.com/TylerBrock/mongo-hacker @SAFX。 - Ryan Schumacher
现在问题是:如何从加载到Mongo的外部JavaScript中打印它?这样做不起作用... - Witold Kaczurba
惊喜!!!!!!! - HubertBlu

437
您可以添加。
DBQuery.prototype._prettyShell = true

将以下代码添加到您的$HOME/.mongorc.js文件中,以默认情况下全局启用漂亮的打印输出。


13
您需要创建一个自定义函数来禁用漂亮的输出,将以下代码添加到$HOME/.mongorc.js文件中:https://gist.github.com/mathrawka/6239405。然后,您可以执行类似于`db.users.find().ugly()`的命令来获取不带格式的输出。 - staackuser2
5
这很棒。对于那些在$HOME文件夹中没有“.mongorc.js”文件的人,你可以创建这个文件并在其中添加命令。重启shell后,它就会生效! - previous_developer
我该如何在cli或mongo shell中验证此选项是否已启用?我的意思是,是否有特殊的命令来执行此操作,例如mongo --checkConf 'pretty',而不是调用db.collection.find().limit(1) - Green
1
@staackuser2,那个链接似乎已经失效了 :( - micseydel
这应该是被接受的答案,因为问题的焦点是:如何将其设置为默认选项。用户已经熟悉.pretty()方法,但不想每次都写它。 - Ariel Monaco
1
默认情况下设置为true会更好。 - Kubie

63

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

你可以在命令行界面上直接执行此操作:

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

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


1
这对我完美地起作用了。| MongoDB shell 版本:2.6.7 和 Oh-My-Zsh [版本 e55c715] (https://github.com/robbyrussell/oh-my-zsh/tree/e55c715508a2f652fed741f2047c66dda2c6e5b0) - tjfwalker

23

2
有趣的是,从控制台上看,.toArray() 函数输出的 JSON 格式比 .pretty() 函数更好。例如:我的集合中的第一条记录与其他记录不同(可能是问题所在),但是 .pretty() 将其输出为 { "_id" : "VERSION", "v" : "1.5" } - 全部在一行上,而 .toArray() 则像其他记录一样进行了良好的格式化。 - kodybrown

19

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

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

9
给Mongo-hacker(node模块) 一次尝试,它总是打印出漂亮的输出。 https://github.com/TylerBrock/mongo-hacker 此外,它增强了mongo shell(仅支持版本>2.4,当前版本为3.0),例如:
- 着色 - 额外的shell命令(计算文档/计算文档等) - API增加(db.collection.find({ ... }).last(), db.collection.find({ ... }).reverse(), 等) - 聚合框架
我在生产环境中使用它有一段时间了,还没有遇到问题。

如果我没有mongodb,只安装了meteor怎么办? - pihentagy
注意:当您使用npm安装mongo-hacker时,它似乎会覆盖$HOME/.mongorc.js - Hubro

6

我找到了问题,但不知道如何从外部加载的mongo中打印它。因此:

这个方法适用于控制台:并且在控制台中更为方便,但无法在外部加载的mongo JavaScript中使用:

db.quizes.find().pretty()

这个在外部加载mongo的javascript中有效:

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

-1

看看这个:

db.collection.find().pretty()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接