Функции Map Reduce выполняются в оболочке, но не компилируются через JavaRAP MapReduceCommand - PullRequest
0 голосов
/ 28 февраля 2012

Я пытаюсь выполнить следующую команду с помощью API-интерфейса mongo - класс MapReduceCommand. Во время отладки MapReduceCommand mrc , кажется, содержит следующее.

{ "mapreduce" : "inColl" , "map" : "function mapf(){var vr = new Date(this.reg_d.getFullYear(),this.reg_d.getMonth(),this.reg_d.getDate());var key = {seg_dt:vr,com: this.com}emit(key,{count:1});}" , "reduce" : "function reducef(key, values){var r = {count:0};values.forEach(function(v){r.count += v.count;});return r;}" , "verbose" : true , "out" : { "reduce" : "outColl"} , "query" : { "tp" : { "$in" : [ 1 , 0]}} , "finalize" : "function finalizef(key, value){var r = {com:key.com,ou_ke:0,seg_dt:key.seg_dt};r.ou_ke += value.count ;return r;}"}

Когда я выполняю MapReduceOutput = inColl.mapreduce (mrc); я получаю следующую ошибку

Пн 27 февраля 23:39:49 [conn48] построение нового индекса для {0: 1} для> djkdb.tmp.mr.inColl_outColl_15_inc Пн Фев 27 23:39:49 [conn48] сделано для 0 записей 0сек Пн 27 февраля 23:39:49 [conn48] создание нового индекса для {_id: 1} для> djkdb.tmp.mr.inColl_outColl_15_inc Пн Фев 27 23:39:49 [conn48] сделано для 0 записей 0сек Пн Фев 27 23:39:51 [conn47] Ошибка JS: Ошибка синтаксиса: отсутствует; перед выпиской nofile_b: 0 Понедельник, 27 февраля 23:39:51 [conn47] компиляция не удалась для: function mapf () {var vr = new> Date (this.reg_d.getFullYear (), this.reg_d.getMonth (), this.reg_d.getDate () ); var key => {seg_dt: vr, com: this.com} emit (ключ, {count: 1});} Пн 27 февраля 23:39:51 [conn47] mr не удалось, удалив коллекцию

Это проблема синтаксиса javascript или я что-то упустил здесь?

Спасибо!

1 Ответ

2 голосов
/ 28 февраля 2012

Похоже, у вас есть синтаксическая ошибка:

function mapf(){
    var vr = new Date(this.reg_d.getFullYear(),this.reg_d.getMonth(),this.reg_d.getDate());
    var key = {seg_dt:vr,com: this.com}  <--- syntax problem
    emit(key,{count:1});
}

Вам не хватает точки с запятой в строке 3.

    var key = {seg_dt:vr,com: this.com}

Здесь я получил сообщение об ошибке:

[conn47] JS Error: SyntaxError: missing ; before statement 

Я бы предложил использовать что-то, чтобы помочь с форматированием вашего кода.Простое добавление соответствующей каретки сделало ошибку совершенно ясной.

...