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


516

有没有办法告诉Mongo漂亮的打印输出?当前,所有内容都输出到一行,并且很难读取,特别是对于嵌套数组和文档。


现在:如何从加载到Mongo中的外部javascript打印它?
Witold Kaczurba,

@WitoldKaczurba尝试寻找问题的答案。如果找不到答案,请继续将其发布为新问题。
MForMarlon

Answers:



416

你可以加

DBQuery.prototype._prettyShell = true

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


13
您将需要创建一个自定义功能来为您禁用它。将其添加到您的$HOME/.mongorc.jsgist.github.com/mathrawka/6239405 然后,您可以执行类似db.users.find()。ugly()之类的操作来获得漂亮的打印效果。
staackuser2

5
+1太好了。对于那些在$ HOME文件夹中没有.mongorc.js文件的用户;您可以创建此文件并在其中添加命令。重新启动外壳后,它就可以了!
previous_developer13年

如何在cli或mongo shell中验证此选项已启用?我的意思是,是否有一个特殊的命令,例如mongo --checkConf 'pretty',而不是通过致电db.collection.find().limit(1)
Green Green

1
@ staackuser2,该链接似乎已断开:(
micseydel

当问题被指出时,这应该是公认的答案:如何使它成为默认选项。用户已经熟悉.pretty()方法,但不想每次都编写它
Ariel Monaco

54

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

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

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

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


1
这非常适合我。| MongoDB Shell版本:2.6.7和Oh-My-Zsh 版本e55c715
tjfwalker 2015年

20

由于它基本上是javascript shell,因此您也可以使用toArray()

db.collection.find().toArray()

但是,这将打印出集合的所有文档,而pretty()这将使您可以进行迭代。请参阅:http : //docs.mongodb.org/manual/reference/method/cursor.toArray/


2
有趣的是,该.toArray()功能从控制台输出的格式比其.pretty()功能更好。即:我收藏的第一条记录与其余记录不同(可能是问题所在),但是.pretty()将其转储为{ "_id" : "VERSION", "v" : "1.5" }-都在一行上,在.toArray()格式上像其余记录一样好
。。– wasatchwizard

17

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

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

8

尝试一下Mongo-hacker(节点模块),它总是可以打印漂亮的。 https://github.com/TylerBrock/mongo-hacker

更多它增强了mongo shell(仅支持ver> 2.4,当前ver是3.0),例如

  • 显色
  • 其他Shell命令(计算文档/计算文档/等)
  • API添加(db.collection.find({...})。last(),db.collection.find({...})。reverse()等)
  • 汇总框架

我在生产环境中使用了一段时间,还没有问题。


如果我没有mongodb,只是安装了流星怎么办?
pihentagy

注意:当您使用npm安装mongo-hacker时,它显然会覆盖$HOME/.mongorc.js
Hubro

1

遇到了问题,但不知道如何从外部加载的mongo中打印它。所以:

这适用于控制台:并在控制台中优先使用,但不适用于外部mongo加载的javascript:

db.quizes.find().pretty()

这在外部mongo加载的javscript中起作用:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.