php[world] 2018 - Call for Speakers


(PECL mongo >=1.5.0)

MongoCommandCursor::createFromDocumentCreate a new command cursor from an existing command response document


public static MongoCommandCursor MongoCommandCursor::createFromDocument ( MongoClient $connection , string $hash , array $document )

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.

Return Values

Returns the new cursor.


Example #1 MongoCommandCursor::createFromDocument()

= new MongoClient;
$d $m->demo;

// Define the aggregation pipeline
$pipeline = [
'$group' => [
'_id' => '$country_code',
'timezones' => [ '$addToSet' => '$timezone' ]
    ] ],
'$sort' => [ '_id' => ] ],

// 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' => ],

// 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) {
  array(3) {
    object(MongoInt64)#5 (1) {
      string(12) "392143983421"
    string(11) "demo.cities"
    array(1) {
      array(2) {
        string(2) "AD"
        array(1) {
          string(14) "Europe/Andorra"
string(25) "localhost:27017;-;.;17617"

As you can see, the returned cursor information has the id, ns and firstBatch fields.

See Also

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top