La clase MongoCommandCursor
(PECL mongo >=1.5.0)
Introducción
Un cursor de comandos se usa para recorrer los resultados de un comando de base de datos. Un cursor de comando es similar a un MongoCursor normal excepto que se usa para recorrer el resultado de un comando del servidor en lugar de un resultado de una consulta.
Normalmente no se crean cursores usando el constructor de MongoCommandCursor, se obtiene un nuevo cursor llamando a MongoCollection::commandCursor().
Usar un cursor de comandos en lugar de MongoDB::command() significa que se puede recorrer un conjunto de resultados mucho más grande que el devuelto por MongoDB::command(), que está limitado al tamaño máximo de un documento (actualmente 16MB).
Observe que el cursor no "contiene" los resultados del comando de la base de datos, solamente los gestiona. Por lo tanto, si se imprime un cursor (con, digamos, var_dump() o print_r()), se obtendrá el objeto cursor, no los documentos.
Escenarios de un cursor
Un MongoCommandCursor tiene dos "escenarios de vida": pre y post consulta. Cuando un cursor se crea, aún no ha contactado con la base de datos, por lo que esta en un estado de pre consulta. En este escenario, el cliente puede además especificar la consulta que quiere realizar, incluyendo la configuración del tamaño del lote.
Cuando el cliente intenta obtener un resultado (llamando a MongoCommandCursor::next(), directa o indirectamente), el cursor se traslada al escenario de post consulta. En este punto, el comando ha sido ejecutado por la base de datos y solamente se puede configurar el tamaño del lote.
Ejemplo #1 Añadir opciones a MongoCommandCursor
<?php
$cursor = new MongoCommandCursor(...);
// la base de datos aún no ha sido consultada, por lo que se pueden añadir más opciones
$cursor = $cursor->batchSize( 4 );
var_dump($cursor->getNext());
// ahora la base de datos ha sido consultada y no se pueden añadir más opciones
?>
Sinopsis de la Clase
Ver también
- MongoDb::command()
- MongoCollection::commandCursor()
Tabla de contenidos
- MongoCommandCursor::batchSize — Limita el número de elementos devueltos en un lote
- MongoCommandCursor::__construct — Crear un nuevo cursor de comando
- MongoCommandCursor::createFromDocument — Crear un nuevo cursor de comando desde un documento de cursor existente
- MongoCommandCursor::current — Devuelve el elemento actual
- MongoCommandCursor::dead — Comprueba si hay documentos que no han sido enviados aún desde la base de datoa para este cursor
- MongoCommandCursor::getReadPreference — Get the read preference for this command
- MongoCommandCursor::info — Obtiene la consulta, los campos, el límite y el salto de este cursor
- MongoCommandCursor::key — Devuelve el _id del resultado acutal
- MongoCommandCursor::next — Avanza el cursor al siguiente resultado
- MongoCommandCursor::rewind — Ejecuta el comando y reinicia el cursor al comienzo del conjunto de resultados
- MongoCommandCursor::setReadPreference — Set the read preference for this command
- MongoCommandCursor::timeout — Sets a client-side timeout for this command
- MongoCommandCursor::valid — Obtener un nuevo elemento de resultado, y devuelve si podría devolverlo