Query Cursor (streaming)
Mongoose 🔴 SeniorDéfinition
Query#cursor() retourne un curseur Node.js en mode streaming au lieu de charger tous les documents en mémoire via exec(). Chaque document est hydraté en instance Mongoose au fil de l'eau, ce qui permet de traiter des collections volumineuses sans saturer la RAM du processus.
Analogie
Comme lire un livre page par page plutôt que de charger toutes les pages en mémoire avant de commencer a lire.
Exemple de code
const cursor = User.find({ active: true }).cursor();
for await (const user of cursor) {
await processUser(user); // un document a la fois
}
Cas d'usage
Exporter ou traiter en masse une collection de plusieurs millions de documents sans épuiser la mémoire.
Anti-pattern
Appeler .lean() puis manipuler le curseur comme un tableau charge en mémoire, perdant l'intérêt du streaming.
Termes liés
Fiche mise à jour le 2026-09-27