Как перенаправить вывод в mongo JS

У меня есть что-то вроде ниже в моем файле mongo js

db.eval(function(){
   db.user.find( { email : {$exists : false}} ).forEach(
     function(found){
            id = found._id; 
            print(id);  // this will print to mongo logs

print() будет печатать в журналах mongodb, но я хочу отправить найденные идентификаторы в файл output.txt в другом месте. Потому что мне нужно отправить этот файл по электронной почте для дальнейшей обработки. Является ли это возможным ? Спасибо..


person NewQueries    schedule 13.11.2013    source источник
comment
не используйте db.eval(), используйте оболочку и перенаправьте ее вывод в файл. См. stackoverflow.com/questions /13104800/   -  person Asya Kamsky    schedule 14.11.2013
comment
Спасибо, я проверю это   -  person NewQueries    schedule 15.11.2013


Ответы (1)


Вы можете использовать mongoexport из командной строки.

Пример:

mongoexport -d mydatabase                   \
    --fields _id                            \
    --query '{ email: { $exists: false }}'  \
    -c user                                 \
    --csv                                   \
    --out myfile_for_further_processing.csv

Дополнительные параметры см. в документах.

Изменить О, я не заметил, что вы используете mongojs. Это можно сделать другим способом:

var fs = require('fs');

db.user.find( { email : {$exists : false}}, function (err, docs) {
    if (err) throw err;

    var ids = docs.map(function (doc) {
        return doc._id.toHexString();
    });

    // I assume it is not critical when using sync-version
    fs.writeFileSync('output.txt', ids.join('\n'), 'utf8');
});

(В коде может быть много ошибок, я просто написал текст без редактора/теста.)

person hgoebl    schedule 13.11.2013
comment
Спасибо попробую и сообщу - person NewQueries; 15.11.2013