Query Cursor (streaming)

Mongoose 🔴 Senior

Dé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

#sgbd#interview#database#mongoose

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre