默认情况下,在MongoDB shell中打印漂亮

raf*_*ian 490 command-line-interface mongodb mongo-shell

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

Ser*_*sev 840

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

你可以问它很漂亮.

db.collection.find().pretty()
Run Code Online (Sandbox Code Playgroud)

  • 如果你想输出彩色+其他增强功能,请查看https://github.com/TylerBrock/mongo-hacker @SAFX (17认同)

sta*_*er2 402

你可以加

DBQuery.prototype._prettyShell = true
Run Code Online (Sandbox Code Playgroud)

$HOME/.mongorc.js默认情况下,在您的文件中启用全局打印.

  • 您将需要创建一个自定义功能来禁用它.将其添加到您的`$ HOME/.mongorc.js`:https://gist.github.com/mathrawka/6239405然后您可以执行类似db.users.find().丑陋()的操作来获取它而不打印. (13认同)
  • +1这很棒.对于那些在$ HOME文件夹中没有.mongorc.js文件的人; 您可以创建此文件并在其中添加命令.重新启动shell后,它可以工作! (5认同)

Bha*_*wla 51

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

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

echo DBQuery.prototype._prettyShell = true >> ~/.mongorc.js
Run Code Online (Sandbox Code Playgroud)

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


Aaf*_*ikh 17

既然它基本上是一个javascript shell,你也可以使用toArray():

db.collection.find().toArray()
Run Code Online (Sandbox Code Playgroud)

但是,这将打印集合的所有文档,这与pretty()您允许迭代.参考:http://docs.mongodb.org/manual/reference/method/cursor.toArray/

  • 有趣的是,从控制台中,`.toArray()` 函数输出的 JSON 格式比 `.pretty()` 函数更好。即:我收藏的第一条记录与其他记录不同(这可能是问题所在),但是 `.pretty()` 将其转储为 `{ "_id" : "VERSION", "v" : "1.5" } ` - 全部在一行上,其中 `.toArray()` 像其他记录一样格式化它。 (2认同)

Gof*_*off 16

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

db.collection.find().forEach(printjson);
Run Code Online (Sandbox Code Playgroud)


Gau*_*dhi 8

尝试一下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()等)
  • 聚合框架

我正在使用生产环境,没有问题.


Wit*_*rba 6

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

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

db.quizes.find().pretty()
Run Code Online (Sandbox Code Playgroud)

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

db.quizes.find().forEach(printjson)
Run Code Online (Sandbox Code Playgroud)