2015-10-15 119 views
1

我对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脚本。

+0

用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());') –

+0

这是答案,也是一个非常有用的答案。谢谢詹姆斯!你可以将它作为答案输入,以便我可以将其标记为正确答案并认可你的贡献? –

回答

0

当在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]

相关问题