(PECL mongo >=1.5.0)
MongoCommandCursor::createFromDocument — Create a new command cursor from an existing cursor document
$connection
   , string $hash
   , array $document
   )Use this method if you have a raw command result with cursor information in it.
connection
     Database connection.
hash
     The connection has, as obtained through the third by-reference argument to MongoDB:command().
document
     Document with cursor information in it. This document needs to contain the id, ns and firstBatch fields. Such a document is obtained by calling the MongoDB:command() with appropriate arguments to return a cursor, and not just a result. See the example below.
Returns the new cursor.
Example #1 MongoCommandCursor::createFromDocument()
<?php
$m = new MongoClient;
$d = $m->demo;
// setup the pipeline
$pipeline = [
    [ '$group' => [
        '_id' => '$country_code',
        'timezones' => [ '$addToSet' => '$timezone' ]
    ] ],
    [ '$sort' => [ '_id' => 1 ] ],
];
// run the command. The "cursor" option below instructs the server to return a cursor information document instead of results
$r = $d->command(
    [
        'aggregate' => 'cities',
        'pipeline' => $pipeline,
        'cursor' => [ 'batchSize' => 1 ],
    ],
    null,
    $hash
);
// Show result and hash
var_dump( $r, $hash );
// construct the command cursor
$cursor = MongoCommandCursor::createFromDocument( $m, $hash, $r );
?>
The above example will output something similar to:
As you can see, the returned cursor information has the id, ns and firstBatch fields.