Dzieje się tak dlatego, że polecenie grupy faktycznie uruchamia map/reduce, a map/reduce to javascript. W javascript domyślnym typem liczby jest podwójna, z tego powodu zwracana jest podwójna.
Więc prawdopodobnie możesz opakować swoje liczby za pomocą NumberLong(..)
jeśli chcesz zobaczyć długi wynik polecenia grupy:
{
...
initial: { count: new NumberLong(0) },
reduce: "function (o, a) { a.count += new NumberLong(o.count); }"
}
Nie testowałem tego, ale prawie jestem pewien, że powinno działać.