Как получить результаты команды 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 <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