Подтвердить что ты не робот

Печать вывода запросов Mongo в файл в оболочке mongo

2 дня с Mongo, и у меня есть фон SQL, так что несите меня. Как и в случае с mysql, очень удобно находиться в командной строке MySQL и выводить результаты запроса в файл на машине. Я пытаюсь понять, как я могу сделать то же самое с Mongo, , находясь в оболочке

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

mongo localhost:27017/dbname --eval "printjson(db.collectionName.findOne())" >> sample.json

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

P.S: Вопрос является ответвлением вопроса, который я опубликовал на qaru.site/info/263059/...

4b9b3361

Ответ 1

AFAIK, нет интерактивной опции для вывода в файл, есть предыдущий вопрос SO, связанный с этим: Печать вывода оболочки mongodb в файл

Однако вы можете зарегистрировать весь сеанс оболочки, если вы вызываете оболочку с командой tee:

$ mongo | tee file.txt
MongoDB shell version: 2.4.2
connecting to: test
> printjson({this: 'is a test'})
{ "this" : "is a test" }
> printjson({this: 'is another test'})
{ "this" : "is another test" }
> exit
bye

Затем вы получите файл с этим контентом:

MongoDB shell version: 2.4.2
connecting to: test
> printjson({this: 'is a test'})
{ "this" : "is a test" }
> printjson({this: 'is another test'})
{ "this" : "is another test" }
> exit
bye

Чтобы удалить все команды и сохранить только выход json, вы можете использовать команду, похожую на:

tail -n +3 file.txt | egrep -v "^>|^bye" > output.json

Затем вы получите:

{ "this" : "is a test" }
{ "this" : "is another test" }

Ответ 2

Если вы вызываете оболочку с параметрами script -file, db address и -quiet, вы можете перенаправить вывод (например, с помощью print()) в файл:

mongo localhost/mydatabase --quiet myScriptFile.js > output 

Ответ 3

Вам может быть полезно просто увеличить количество отображаемых результатов

В оболочке mongo > DBQuery.shellBatchSize = 3000

а затем вы можете выбрать все результаты из терминала за один раз и вставить в текстовый файл.

Это то, что я собираюсь сделать:)

(from: fooobar.com/info/32986/...)