-1

mongo Java API - 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); を実行すると、次のエラーが発生します

Mon Feb 27 23:39:49 [conn48] >djkdb.tmp.mr.inColl_outColl_15_inc の { 0: 1 } に新しいインデックスを構築しています39:49 [conn48] >djkdb.tmp.mr.inColl_outColl_15_inc の { _id: 1 } に新しいインデックスを作成中 2 月 27 日月曜日 23:39:49 [conn48] 0 レコードに対して完了 2 月 27 日月曜日 23:39:51 [conn47] ] JS エラー: SyntaxError: がありません。ステートメントの前 nofile_b:0 Mon Feb 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(key,{count:1});} Mon Feb 27 23:39:51 [conn47] mr が失敗し、コレクションが削除されました

これは JavaScript の構文の問題ですか、それともここで何か基本的なことが欠けていますか?

ありがとう!

4

1 に答える 1

2

構文エラーがあるようです:

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 

コードのフォーマットに役立つものを使用することをお勧めします。適切なキャリッジを追加するだけで、間違いが明確になりました。

于 2012-02-28T02:06:17.777 に答える