sql >> Base de Datos >  >> NoSQL >> MongoDB

Evite el límite agregado de 16 MB

El problema es que el controlador nativo difiere de cómo funciona el método de shell de forma predeterminada en que el "shell" en realidad devuelve un objeto "cursor" donde el controlador nativo necesita esta opción "explícitamente".

Sin un "cursor", .aggregate() devuelve un solo documento BSON como una matriz de documentos, por lo que lo convertimos en un cursor para evitar la limitación:

let cursor = collection.aggregate(
  [{ "$group": { "_id": "$internalNumber" } }],
  { "cursor": { "batchSize": 500 } }
);

cursor.toArray((err,docs) => {
   // work with resuls
});

Luego puede usar métodos regulares como .toArray() para hacer que los resultados sean una matriz de JavaScript que en el 'cliente' no comparte las mismas limitaciones u otros métodos para iterar un "cursor".