Это потому, что групповая команда на самом деле запускает карту / уменьшить, а карта / уменьшить это javascript.В javascript тип числа по умолчанию - double, из-за этого он возвращает doubles.
Так что вы, вероятно, можете заключить свои числа в NumberLong(..)
, если хотите видеть long в результате команды группы:
{
...
initial: { count: new NumberLong(0) },
reduce: "function (o, a) { a.count += new NumberLong(o.count); }"
}
Не проверял это, но почти уверен, что это должно работать.