Как экспортировать конкретный запрос в монго в CSV?

Я ищу либо о том, как экспортировать результат запроса из монго в CVS или excel, либо о том, как экспортировать результаты в robomongo. Я нашел mongoexport, но думаю, что он может экспортировать коллекцию только с некоторыми простыми ограничениями.

Это мой запрос:

 db.getCollection('user').find({ "coins": { $elemMatch: { "id":"30","amount":0} }  })

person jhonny lopez    schedule 10.08.2015    source источник


Ответы (2)


Для MongoDB 3.0+ вы можете указать запрос в mongoexport с помощью параметров -q и --type:

mongoexport -d test -c user -q '{ coins: { $elemMatch: { "id":"30","amount":0}}}' --type=csv --out exportdir/myRecords.json

Для более ранних версий используйте параметр --csv с полями заголовка:

mongoexport -d test -c user -q '{ coins: { $elemMatch: { "id":"30","amount":0}}}' --csv -f first_name,last_name,title --out exportdir/myRecords.json
person Jay G    schedule 10.08.2015
comment
в этом случае нельзя использовать mongoexport, потому что данные глубокие, например, цвет столбца имеет красный, синий, желтый... и другие похожи. mongoexport понимает, что это для простых строк (один цвет, а не массивы). - person jhonny lopez; 13.08.2015

Вы можете использовать forEach для просмотра каждого результата и функцию для их форматирования. Что-то типа:

db.getCollection('user').find({ "coins": { $elemMatch: { "id":"30","amount":0} }  })
.forEach(function(u){

  print('"' + u._id + '","' + u.amount + '"');

});

Затем просто отправьте вывод в файл.

person Ben    schedule 10.08.2015
comment
Бен, как мне просто отправить вывод в файл? - person PostureOfLearning; 24.01.2017
comment
@PostureOfLearning сохраните свой сценарий как файл js script.js mongo test script.js > out.csv - person Hussain Fakhruddin; 20.02.2017