2015-10-15 2 views
1

Я озадачен проблемой, с которой сталкиваюсь с монгольской оболочкой, производящей различные вариации на выходе.Командная строка mongo vs shell: разные результаты

При входе в Монго оболочки и запустить простейший из запросов, таких как:

db.database.findOne(); 

я получаю документ возвращается.

Когда я вызываю ту же команду через --eval опции в командной строке, я получаю другой результат: (хе-й красноломкий чувствительную информацию)

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 в сценарий оболочки.

+0

Оберните свой eval с помощью printjson() и дайте 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

Когда findOne запускается внутри оболочки, он будет печатать результат в JSON в качестве удобства. Для печати с помощью сценария оболочки или 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]

Смежные вопросы