O problema é que o driver nativo difere de como o método shell está funcionando por padrão, pois o "shell" está realmente retornando um objeto "cursor" onde o driver nativo precisa dessa opção "explicitamente".
Sem um "cursor",
.aggregate()
retorna um único documento BSON como um array de documentos, então o transformamos em um cursor para evitar a limitação:let cursor = collection.aggregate(
[{ "$group": { "_id": "$internalNumber" } }],
{ "cursor": { "batchSize": 500 } }
);
cursor.toArray((err,docs) => {
// work with resuls
});
Então você pode usar métodos regulares como
.toArray()
para tornar os resultados uma matriz JavaScript que no 'cliente' não compartilha as mesmas limitações, ou outros métodos para iterar um "cursor".