0
MapReduce 프로세스를 수행하고 이상한 결과가 나타납니다. 예상되는 결과는 : 내가 가진 무엇Odd MapReduce 출력
{ "_id" : {...}, "value" : { "register" : 1, "login" : 3, "payment" : 4.99, "transaction" : 1} }
은 다음과 같습니다
{ "_id" : {...}, "value" : { "register" : 1, "login" : 6, "payment" : 4.99, "transaction" : 0, "transcation" : NaN } }
모든 권리 "transcation"를 제외하고 보이는, 최초의 "거래": 0이되어야합니다 ... : 1, 두 번째 트랜잭션 : NaN이 없어야합니다.
모든 로그를 인쇄하지만 잘못을 찾지 못했습니다.
코드 :
exports.basic = function(){
var map = function(){
var key = {
app:this.properties.YA0token,
uuid:this.properties.distinct_id
}
var value = {
register:0,
login:0,
payment:0,
transaction:0
};
if (this.event=='register') {
value.register = 1;
} else if (this.event=='login') {
value.login = 1;
} else if (this.event=='YA0charge') {
value.payment = this.properties.amount;
value.transaction = 1;
print(value.register,value.login,value.payment,value.transaction);
}
emit(key,value);
}
var reduce = function(key,values){
var result = {
register:0,
login:0,
payment:0,
transaction:0
};
print("values.length = ",values.length);
values.forEach(function(value){
result.register += value.register;
result.login += value.login;
result.payment += value.payment;
result.transcation += value.transcation;
if (value.payment>0) print('value:',value.register,value.login,value.payment,value.transaction);
});
return result;
}
var options = {
out:{merge:"mr_users"},
query:{
"event":{$in:["register","login","YA0charge"]},
"properties.time": {"$gte": new Date("9 1 2013"), "$lt": new Date("9 3 2013")}
}
}
eventCollection.mapReduce(map,reduce,options,function (err, collection2) {
logger.info('MapReduce for basic is done.');
collection2.find().toArray(function(err,item){
logger.silly(item);
});
});
}
감사합니다. 너무 바보 같은 문제라고 생각할 수 없습니다. – blackgun