Как получить результаты команды mongo в плоский файл

как экспортировать результаты команды MongoDB в плоский файл

например, если я должен получить db.collectionname.find() в плоский файл.

пробовал db.collectionname.find() >> "test.txt" похоже, не работает.

6 ответов


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

mongo 127.0.0.1/db --eval "var c = db.collection.find(); while(c.hasNext()) {printjson(c.next())}" >> test.txt

предполагая, что у вас есть база данных под названием "db", работающая на localhost, и коллекция под названием "Коллекция", это экспортирует все записи в файл под названием test.txt

Если у вас есть уже скрипт, который вы хотите выполнить, вы также можете создать сценарий.файл JS и просто используйте

mongo 127.0.0.1/db script.js >> test.txt

надеюсь, это поможет


Я не знаю, как это сделать из оболочки mongo напрямую, но вы можете заставить mongoexport выполнять запросы и отправлять результаты в файл с параметрами-q и-o:

mongoexport -h mongo.dev.priv -d models -c profiles -q '{ $query : { _id : "MRD461000" } }' -o MRD_Series1.json

вышеуказанные хиты запрашивают коллекцию профилей в базе данных моделей, хватая документ JSON для _id = "MRD641000". Работать на меня.


использовать

mongo db_name --username user --password password < query1.js >> result.txt

пропустив БД, которая должна быть фактической БД в ответе Пешкиры, вот общий синтаксис для одной строки в оболочке (при отсутствии пароля):

mongo <host>:<db name> --eval "var x = <db name>.<collection name>.<query>; while(x.hasNext()) { printjson( x.next() ) }" >> out.txt

я протестировал его как на своем mac, так и на Google cloud Ubuntu 15 с Mongo 3+.


mongoexport --host 127.0.0.1 --port 27017 --username youruser -p yourpass \
   -d yourDatabaseName -c collectionName --type csv \
   --fields field1,field2 -q '{"field1" : 1495730914381}' \
   --out report.csv

mongoexport --db db_name --collection collection_name --csv --out имя_файла.csv-f field1, field2, field3