MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Evita il limite aggregato di 16 MB

Il problema è che il driver nativo differisce dal modo in cui il metodo shell funziona per impostazione predefinita in quanto la "shell" sta effettivamente restituendo un oggetto "cursor" in cui il driver nativo ha bisogno di questa opzione "esplicitamente".

Senza un "cursore", .aggregate() restituisce un singolo documento BSON come un array di documenti, quindi lo trasformiamo in un cursore per evitare la limitazione:

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

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

Quindi puoi usare metodi regolari come .toArray() per rendere i risultati un array JavaScript che sul 'client' non condivide le stesse limitazioni, o altri metodi per iterare un "cursore".