mongodb: как отладить карту / уменьшить на оболочке mongodb - PullRequest
9 голосов
/ 23 сентября 2011

Я новичок в MongoDB, я использую карту / уменьшить. Может кто-нибудь сказать мне, как отлаживать при использовании карты / уменьшить? Я использовал функцию «print ()», но на оболочке MongoDB ничего не печатается. Следующее - моя функция уменьшения:

    var reduce = function(key, values){
        var result = {count: 0, host: ""};

        for(var i in values){
        result.count++;
        result.host = values[i].host;
        print(key+" : "+values[i]);
        }
        return result;
    }

когда я пишу вышеуказанную функцию на оболочке и нажимаю Enter после завершения, на оболочке ничего не печатается. Что еще я должен сделать для отладки?

Спасибо

Ответы [ 3 ]

20 голосов
/ 23 сентября 2011

Кажется, что print() операторы в функциях сокращения записываются в файл журнала, а не в оболочку.Поэтому проверьте файл журнала на наличие результатов отладки.

Вы можете указать файл журнала с помощью параметра --logpath D:\path\to\log.txt при запуске процесса mongod.

4 голосов
/ 08 августа 2014

Посмотрите на этот простой онлайн-отладчик MongoDB MapReduce, который позволяет получать результаты агрегации для данных примера, а также выполнять пошаговую отладку функций Map / Reduce / Finalize прямо в среде вашего браузера.

Надеюсь, это будет полезно.

http://targetprocess.github.io/mongo-mapreduce-debug-online/

3 голосов
/ 23 сентября 2011

На веб-сайте mongodb есть специальная страница, на которой вы найдете ответ: http://www.mongodb.org/display/DOCS/Troubleshooting+MapReduce

и, очевидно, ваше сокращение неверно: строка result.count ++ будет содержать количество элементов, содержащихся в значениях массива, что (в парадигме преобразования карты) ничего не значит Ваша функция сокращения просто возвращает «случайное» имя хоста (потому что алгоритм mapreduce не может быть предсказан для содержимого сокращения на любом этапе) и случайное число.

Можете ли вы объяснить, что вы хотите сделать? (я предполагаю, что вы хотите посчитать количество «что-то» на хост)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...