MongoCursor::batchSize

(PECL mongo >=1.0.11)

MongoCursor::batchSizeLimita el número de elementos devueltos en un lote

Descripción

public MongoCursor::batchSize ( int $batchSize ) : MongoCursor

Un cursor normalmente obtiene un lote de objetos de resultados y los almacena localmente. Este método establece el valor de batchSize para configurar la cantidad de documentos obtenidos desde el servidor en viaje de ida y vuelta. Sin embargo, nunca devolverá más documentos que los que no sobrepasen el límite del tamaño del lote (normalmente 4 MB).

Parámetros

batchSize

El número de resultados a devolver por lote. Cada lote requiere un viaje de ida y vuelta al servidor.

Si batchSize is 2 o más, representa el tamaño de cada lote de objetos recuperados. Se puede ajustar para optimizar el rendimiento y limitar la transferencia de datos.

Si batchSize es 1 o negativo, limitará el número de documentos devueltos al valor absoluto de batchSize, y el cursor se cerrará. Por ejemplo, si batchSize es -10, el servidor devolverá un máximo de 10 documentos siempre que quepan en 4 MB; luego cerrará el cursor.

Advertencia

Un batchSize de 1 es especial, y significa lo mismo que -1, esto es, un valor de 1 hace que el cursor solamente devuelva un documento.

Observe que esta característica se diferencia de MongoCursor::limit() en que los documentos deben ajustarse dentro de un tamaño máximo, por lo que elimina la necesidad de enviar una petición para cerrar el cursor en el lado del servidor. El tamaño del lote se puede cambiar incluso después de que un cursor sea iterado, en cuyo caso el ajuste se aplicará solamente a la obtención del siguiente lote.

Esto no anula al límite de MongoDB de la cantidad de datos que serán devueltos al cliente (esto es, si se establece el tamaño del lote a 1,000,000,000, MongoDB todavía devolverá 4-16 MB de resultados por lote).

Para asegurarse de un comportamiento consistente, las reglas de MongoCursor::batchSize() y MongoCursor::limit() son un poco complejas, aunque funcionan "como se esperaba". Las reglas son: los límites fuertes anulan a los ligeros, con preferencia dada a MongoCursor::limit() sobre MongoCursor::batchSize(). Después, lo que sea establecido y sea menor que el otro, tomará precedencia. Véase la sección de abajo para algunos ejemplos.

Valores devueltos

Returns this cursor.

Ejemplos

Ejemplo #1 MongoCursor::batchSize() y combinaciones con MongoCursor::limit()

<?php

// un lote, como mucho 10 elementos. -10 hace que el servidor devuelva 10 elementos,
// y luego elimine el cursor.
$cursor->limit(20)->batchSize(-10);

// primer lote: como mucho 10 elementos
$cursor->limit(10);

// primer lote: como mucho 10 elementos
$cursor->limit(10)->batchSize(20);

// los resultados se obtienen en lotes de 10, con un máximo de 20 elementos
// devueltos (lo que significa dos lotes de 10).
$cursor->limit(20)->batchSize(10);

// los resultados se obtienen en lotes de 7, con un máximo de 30 elementos
// devueltos (lo que significa que el controlador solicita 4 lotes de 7, y
// un lote de 2).
$cursor->limit(30)->batchSize(7)
?>

Ver también

La documentación principal de MongoDB sobre » límites.

Historial de cambios

Versión Descripción
1.4.5

Antes de la versión 1.4.5, este método lanzaba una MongoCursorException si el cursor ya había comenzado a iterar.