我试图通过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]在{0:1}为> djkdb.tmp.mr.inColl_outColl_15_inc建立新索引 星期一2月27日23:39:49 [conn48]完成0记录0secs 星期一2月27日23:39:49 [conn48]在{_id:1}为> djkdb.tmp.mr.inColl_outColl_15_inc建立新索引 星期一2月27日23:39:49 [conn48]完成0记录0secs 星期二2月27日23:39:51 [conn47] JS错误:SyntaxError:missing;在语句nofile_b:0之前 星期一2月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});} 星期一2月27日23:39:51 [conn47]先生失败了,删除了收藏
这是一个javascript语法问题还是我错过了一些基本的东西?
谢谢!
答案 0 :(得分: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
我建议使用一些东西来帮助格式化代码。简单地添加适当的马车使错误很明显。