Hi Team,
Mongo DB version - 4.2.13
Mongo java Driver Version - 3.12.0
I am running mapReduce on my collection , it runs fine until we have =< 100 records. As soon as the record exceeds 100 following error is thrown.
com.mongodb.MongoCommandException: Command failed with error 139 (JSInterpreterFailure): 'TypeError: reducedObject is undefined :
PFA my map and reduce code -
function(){
var key = this.createdDate.getFullYear();
var value = {
totalOrderPrice : this.totalOrderPrice,
totalOrderValue :this.totalOrderValue,
instrumentType : this.instrumentType,
createdDate : this.createdDate,
data : {
status : “ok”,
name : “OverallSummary”,
metadata : [{
type : “transaction”,
size : 5
},{
type : “inventory”,
size : 3
}],
summaries : ,
charts :
}
};
emit(key,value);
}
function(key, values){
var reducedObject = values[0].data ;
reducedObject.status = “success”;
var poSum = 0, soSum = 0, poCount = 0, soCount = 0, act = 0, exp = 0, per = 0;
var date = null;
var todayDate = new Date();
//var granSummary = this.granSummary;
//var granChart = this.granChart;
var perDaySale = 0;
var availMap = this.availMap;
for(var i = 0; i<values.length ; i++){
date = values[i].createdDate;
if((date.getDate() == todayDate.getDate())
&& (date.getMonth() == todayDate.getMonth())
&& (date.getFullYear() == todayDate.getFullYear())){
if(values[i].instrumentType == “PO”){
if(values[i].totalOrderPrice != undefined){
poSum += values[i].totalOrderPrice;
poCount ++;
}
}
if(values[i].instrumentType == "SO"){
if(values[i].totalOrderPrice != undefined){
soSum += values[i].totalOrderPrice;
soCount ++;
}
}
}
if(values[i].instrumentType == "PO"){
if(values[i].totalOrderPrice != undefined)
exp += values[i].totalOrderPrice;
}
}
if(act > 0 && exp > 0){
per = (act.toFixed(2)/exp.toFixed(2)) * 100;
}
reducedObject.summaries.push({name: “order”, type: “transaction”, sum : poSum, count : poCount});
reducedObject.charts.push({name: “Primary Filtrate”, type: “transaction”, expected : exp.toFixed(2), actual : act.toFixed(2), percentage : per});
reducedObject.charts.push({name: “1 DAY”, type: “inventory”, percentage : availMap[“1day”]});
reducedObject.charts.push({name: “5 DAYS”, type: “inventory”, percentage : availMap[“5days”]});
reducedObject.charts.push({name: “PER UNIT”, type: “inventory”, percentage : availMap[“1unit”]});
reducedObject.metadata.push({granularity : {keys : [“expected”, “actual”],measuringUnit : “Hour”}});
reducedObject.metadata.push({displayRule : {ruleType : “Threshold”,indicator : “Color”,keys : [“percentage”],constraints : [{from : 0, to : 40,values : [“Red”]},{from : 40,to : 70,values : [“Yellow”]},{from : 70,to : 100,values : [“Green”]}]}});
return reducedObject;
}