2015-10-15 120 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]

相關問題