mongosh —eval возвращает результат, но не приглашение

#mongodb #eval #mongo-shell

Вопрос:

Возникли проблемы с запросом mongosh

попытался запросить монго rs следующим образом:

mongosh mongodb://xx.yy.zz.kk:27010,xx.yy.zz.ll:27010,kk.yy.zz.ff:27010/somedb --username someuser --password somepassword --authenticationDatabase admin --eval 'db.getCollection("somecollection").findOne();'

он возвращает результат, но никогда не возвращает мне мое приглашение (оболочка bash).

обновление: попытка выполнить тот же запрос с другого хоста в другой подсети возвращает результат и возвращается в оболочку. так что, возможно, это не связано с монгошем.

Комментарии:

1. Вы пробовали то же самое с классической mongo оболочкой? На мой взгляд, новое mongosh еще не совсем пригодно для использования.

2. да, я вижу, что на самом деле его там нет. Я не устанавливал mongo, так как не хочу, чтобы весь набор серверов баз данных находился в поле, с которого я запрашиваю удаленный сервер. Мне просто нужен «cli» для запроса mongo , кроме того, устаревшая оболочка mongo устарела

3. Результат должен быть напечатан на вашей консоли, вы получаете ожидаемый результат при запуске оболочки findOne from?

4. да. но, как я вижу, та же команда работает с другой машины из другой подсети, так что это может быть что-то связанное с selinux или сокетами. Честно говоря, я не знаю.

5. Запуск непосредственно из оболочки (без —eval), он должен возвращать ошибку.

Ответ №1:

Когда вы используете --eval , то команда выполняется, а затем оболочка завершается. Если вы хотите сохранить оболочку открытой, используйте опцию --shell

Комментарии:

1. На самом деле мне просто нужен результат. и моя (bash) подсказка оболочки. Мне не нужна раковина монго.