Добрый день. Помогите пожалуйста разобраться. Есть коллекция bankGuarantee
пишу вот так mapReduce:
var map = function(){
var key = {
regNum: this.regNumber,
bank_name: this.bank.shortName,
bank_inn: this.bank.INN,
year: this.guarantee.guaranteeDate.getFullYear(), //Дата выдачи БГ.Год
month: this.guarantee.guaranteeDate.getMonth(), //Дата выдачи БГ.Месяц
category: getCategory(this.guarantee.guaranteeAmount)
};
emit(key, {count:1, bg_amount: this.guarantee.guaranteeAmount /*,Сумма контракта*/});
}
var reduce = function(key, values){
var bg_count = 0;
var bg_amount = 0;
values.forEach(function(value) {
bg_count += value['count'];
bg_amount += value['bg_amount'];
});
return {count: bg_count, amount: bg_amount};
}
db.bankGuarantee.mapReduce(map, reduce, {out: 'bg_stats'});
не могу понять некоторые моменты:
1. в ключе есть поле regNum: this.regNumber, но оно мне не нужно в ключе, мне нужно, чтобы для всех ключей count считался по среднему, типа avg в sql если в ключе документ с одним и тем же кодом встречается n раз, то count по этим документам должен равняться одному, как это правильно написать?
2. year: this.guarantee.guaranteeDate.getFullYear() поле guaranteeDate в некоторых документах может или отсутствовать или называться по другому, как лучше обработать такую ситуацию?
3. Еще и год в результате возвращается как Double как сделать, чтобы целое число было?