mongo命令行与shell:不同的结果
问题描述:
我对Mongo Shell在输出上产生不同变化时遇到的问题感到困惑。mongo命令行与shell:不同的结果
当我登录到蒙戈外壳和运行简单的查询,如:
db.database.findOne();
我得到的文档返回。
当我通过命令行上--eval选项调用相同的命令,我得到一个不同的结果:(XX的纂敏感信息)
mongo -u xxx -p xxx xxxx --eval 'db.database.findOne();'
MongoDB shell version: 3.0.6
connecting to: xxxx
[object Object]
当我在一个文件中把这个命令和尝试一下,我根本没有输出。
mongo -u xxx-p xxx xxxx example.js
MongoDB shell version: 3.0.6
connecting to: xxxx
(我只是得到回到这里命令行)
Example.js包含:
db.database.findOne();
我错过了哪一部分蒙戈外壳手册,解释这种行为?
我的目标是能够将我的mongo查询的输出提供给shell脚本。
答
当在shell中运行findOne时,为了方便起见,它将在JSON中打印结果。要通过shell脚本打印或EVAL,你需要通过printjson()调用打印返回参数:
mongo -u xxx -p xxx xxxx --eval 'printjson(db.database.findOne());'
与蒙戈外壳欲了解更多有关脚本看到: http://docs.mongodb.org/master/tutorial/write-scripts-for-the-mongo-shell
[我纠正上述一个错字用于“printson”至“printjson”。再次感谢您的帮助。 -Shabbir]
用printjson()包装你的eval并给http://docs.mongodb.org/master/tutorial/write-scripts-for-the-mongo-shell/#differences-between-interactive-and -scripted-mongo a read('printjson(db.database.findOne());') –
这是答案,也是一个非常有用的答案。谢谢詹姆斯!你可以将它作为答案输入,以便我可以将其标记为正确答案并认可你的贡献? –