MongoCursor::batchSizeLimita el número de elementos devueltos en un lote
&reftitle.description;
publicMongoCursorMongoCursor::batchSizeintbatchSize
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).
&reftitle.parameters;
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.
&reftitle.returnvalues;
Returns this cursor.
&reftitle.examples;
MongoCursor::batchSize y combinaciones con
MongoCursor::limit
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)
?>
]]>
&reftitle.seealso;
La documentación principal de MongoDB sobre límites.
MongoCursor::limitMongoCursorInterface::batchSize
&reftitle.changelog;
&Version;&Description;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.