Use this method if you have a raw command result with cursor information in it. Note that cursors created with this method cannot be iterated multiple times, as they will lack the original command necessary for re-execution.
Database connection.
The connection hash, as obtained through the third by-reference argument to MongoDB::command().
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 an inline result. See the example below.
Returns the new cursor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?php $m = new MongoClient; $d = $m ->demo; // Define the aggregation pipeline $pipeline = [ [ '$group' => [ '_id' => '$country_code' , 'timezones' => [ '$addToSet' => '$timezone' ] ] ], [ '$sort' => [ '_id' => 1 ] ], ]; // Execute the command. The "cursor" option instructs the server to return // cursor information in the response instead of inline 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:
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"
As you can see, the returned cursor information has the id, ns and firstBatch fields.
Please login to continue.