Я вижу, что вы решили проблему, но вот почему возникла проблема.
MongoDB может повторно выполнить вашу функцию уменьшения по результатам предыдущих проходов уменьшения.Это называется повторное уменьшение .
Если повторное уменьшение произошло в исходном сценарии, вы можете получить такие значения:
[
{ count: 1 },
{ count: 1 },
4
{ count: 1 },
{ count: 1 },
{ count: 1 },
3
{ count: 1 },
]
Все{ count: 1 }
значения выдаются вашей функцией карты.Числа 4
и 3
являются результатами предыдущих сокращенных вызовов.Ваша функция сокращения затем получит доступ к свойству count
числа:
count += 4["count"];
Число не имеет свойства count
, поэтому оно вернет undefined
.Добавление undefined
к числу приведет к NaN
.
Чтобы избежать такой сложной для отладки проблемы, вам нужно убедиться, что ваша функция сокращения идемпотентна.Самый простой способ сделать это - вернуть то, что вы излучаете ;значение, которое вы возвращаете в функции сокращения, должно иметь тот же формат, что и значения, которые вы выводите в функции карты.