Печать вывода запросов 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/...
Ответы
Ответ 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/...)