MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Evite o limite agregado de 16 MB


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".