MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Évitez la limite globale de 16 Mo

Le problème est que le pilote natif diffère de la façon dont la méthode shell fonctionne par défaut en ce que le "shell" renvoie en fait un objet "curseur" où le pilote natif a besoin de cette option "explicitement".

Sans "curseur", .aggregate() renvoie un seul document BSON sous la forme d'un tableau de documents, nous le transformons donc en curseur pour éviter la limitation :

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

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

Ensuite, vous pouvez utiliser des méthodes régulières comme .toArray() pour faire des résultats un tableau JavaScript qui sur le 'client' ne partage pas les mêmes limitations, ou d'autres méthodes pour itérer un "curseur".