(PECL mongo >=1.5.0)
MongoCommandCursor::createFromDocument — Crear un nuevo cursor de comando desde un documento de cursor existente
$connection
, string $hash
, array $document
)Use este método si tiene un resultado de comando sin tratar con información de cursor en él. Observe que los cursores creados con este método no se pueden iterar varias veces, ya que carecen del comando original necesario para la reejecución.
connection
La conexión a la base de datos.
hash
El hash de la conexión, obtenida mediante el tercer argumento por referencia de MongoDB:command().
document
El documento con información de cursor en él. Es neceario que este documento contenga los campos id, ns y firstBatch. Tal documento se obtiene invocando a MongoDB:command() con los argumentos apropiados para que devuelva un cursor, y no un resultado. Véase el ejemplo de más abajo.
Devuelve el nuevo cursor.
Ejemplo #1 MongoCommandCursor::createFromDocument()
<?php
$m = new MongoClient;
$d = $m->demo;
// Definir la tubería de totalización
$tubería = [
[ '$group' => [
'_id' => '$country_code',
'timezones' => [ '$addToSet' => '$timezone' ]
] ],
[ '$sort' => [ '_id' => 1 ] ],
];
// Ejecutar el comando. La opción "cursor" le indica al servidor que devuelva
// información del cursor en la respuesta en lugar de los resultados en línea.
$r = $d->command(
[
'aggregate' => 'cities',
'pipeline' => $tubería,
'cursor' => [ 'batchSize' => 1 ],
],
null,
$hash
);
// Mostrar el resultado y el hash
var_dump( $r, $hash );
// Construir el cursor de comando
$cursor = MongoCommandCursor::createFromDocument( $m, $hash, $r );
?>
El resultado del ejemplo sería algo similar a:
array(2) { ["cursor"]=> array(3) { ["id"]=> object(MongoInt64)#5 (1) { ["value"]=> string(12) "392143983421" } ["ns"]=> string(11) "demo.cities" ["firstBatch"]=> array(1) { [0]=> array(2) { ["_id"]=> string(2) "AD" ["timezones"]=> array(1) { [0]=> string(14) "Europe/Andorra" } } } } ["ok"]=> float(1) } string(25) "localhost:27017;-;.;17617"
Como se puede ver, la información del cursor devuelta posee los campos id, ns y firstBatch.