Cursores y tiempos de espera
Cuando un resultado es grande llega por lotes; cada consulta admite además un plazo.
Recorre resultados grandes por lotes con un cursor y pon un plazo a cada consulta con maxTimeMS.
Requisitos
- Una conexión con un usuario que tenga
readsobre la base.
Recorrer por lotes
JavaScript
const cursor = db.pedidos.find({ estado: "pagado" }).batchSize(500);
for await (const pedido of cursor) {
procesar(pedido);
}El driver pide cada lote siguiente con getMore al mismo nodo que abrió el cursor.
Poner un plazo
JavaScript
db.pedidos.find({ estado: "pagado" }).maxTimeMS(2000);Comprobar
Una consulta que pasa del plazo falla con MaxTimeMSExpired (50) y deja de ocupar el nodo.
Problemas frecuentes
getMorefalla conCursorNotFound(43) porque el cursor caducó, se cerró o se pidió a otro nodo.