(PECL mongo >=1.0.11)
MongoCursor::batchSize — Limita el número de elementos devueltos en un lote
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 enun paquete de datos. Sin embargo, nunca devolverá más documentos que los que no sobrepasen el límite del tamaño del lote (normalmente 4 MB).
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.
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.
Returns this cursor.
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)
?>
La documentación principal de MongoDB sobre » límites.
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. |