findOne()
产生漂亮的json对象。
find()
导致jarbled json对象。
在mongo shell中显示时,如何find()
与相同findOne()
?
findOne()
产生漂亮的json对象。
find()
导致jarbled json对象。
在mongo shell中显示时,如何find()
与相同findOne()
?
Answers:
如果您使用JavaScript编写脚本,则可以使用dcrosta的答案。但是,如果要直接在mongo交互式shell上进行漂亮的打印,则必须将pretty()附加到find()查询中。
在外壳上输入:
db.yourcollection.find().pretty()
通过返回游标对象find()
的支持forEach()
,所以你可以使用:
db.foo.find().forEach(printjson)
但是请注意,不同于默认输出find()
显示前10个对象的情况,然后让您选择是否继续迭代,forEach()
将迭代整个结果集。因此,如果您的查询返回许多结果,这可能会花费一些时间,并且可能不会有很大帮助。limit()
是你的朋友在这里。
的使用已经提供了正确的答案.pretty()
。
但是,作为旁注,您也可以在光标上调用.toArray(),以将文档作为JSON的javascript数组获取。
db.foo.find().toArray()
在问这个问题时它可能不可用,但是为了使所有find()
查询的默认输出都漂亮,我使用:
DBQuery.prototype._prettyShell = true
我还添加以下内容:
DBQuery.prototype.ugly = function() {
this._prettyShell = false;
return this;
}
这使我可以使用以下命令丑化单个find()
查询的结果:
db.mycollection.find().ugly()
我通常将两个原型声明都添加到我的~/.mongorc.js
文件中,因此它们在所有mongo cli shell中都可用。
方便的mongo-shell增强程序mongo-hacker(http://mongodb-tools.com/tool/mongo-hacker/)将使您能够做到这一点以及更多花哨的事情。
find().limit(1)
呢