Я пытаюсь объединить несколько значений, испускаемых с моей карты, в пользовательской функции сокращения (rereduce enabled), но я получаю нулевые значения в результате, за исключением нескольких точек данных, где я вижу 0. Буду признателен за любую оказанную помощь. БлагодаряCouchDB - совокупность нескольких значений на этапе уменьшения
Мои данные излучаемые в этом формате:
Key:"dateX" Values:"{'a':435, 'b':5645}"
Key:"dateX" Values:"{'a':8451, 'b':9245}"
Key:"dateX" Values:"{'a':352, 'b':450}"
Key:"dateY" Values:"{'a':5675, 'b':1245}"
Key:"dateY" Values:"{'a':4455, 'b':620}"
Я хочу агрегировать/суммируют значения как в & б для Datex и dateY, моя карта-свертка является:
"map": "function(doc){emit(doc.logDate, {'a': doc.a, 'b': doc.b});}",
"reduce": "function(key, values, rereduce) {
var total = {tA:0, tB:0};
if(rereduce){
for(i=0; i<values.length; i++)
{
total.tA += values[i].a;
total.tB += values[i].b;
}
return total;
}
total.tA = sum(values.a);
total.tB = sum(values.b);
return total; }"
------------------------
Results:
dateX {tA: 0, tB: 0}
dateY {tA: null, tB: null}
dateZ {tA: null, tB: null}
.
.
.
Спасибо @ the4lt Я попробую это, для моей проблемы я исправил это, сделав {tA: 0, tB: 0}; в том же формате, что и «{'a': 4455, 'b': 620}", таким образом метод сокращения работает правильно, и я предполагаю, что он не вызывает повторное использование, поэтому я могу суммировать для цикла и избежать суммы () для агрегирования. –