MongoCommandCursor::createFromDocument

(PECL mongo >=1.5.0)

MongoCommandCursor::createFromDocumentСоздает новый курсор команды из существующего ответа команды документа

Описание

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

Используйте этот метод, если у вас есть необработанный результат команды с информацией о курсоре. Обратите внимание, что курсоры, созданные с помощью этого метода, не могут повторяться многократно, поскольку у них не будет исходной команды, необходимой для повторного выполнения.

Список параметров

connection

Подключение к базе данных.

hash

Хэш соединения, полученный с помощью третьего аргумента путем ссылки на MongoDB::command().

document

Документ с информацией курсора в нем. Этот документ должен содержать поля id, ns и firstBatch. Такой документ получается путем вызова MongoDB::command() с соответствующими аргументами для возврата курсора, а не только встроенного результата. Смотрите пример ниже.

Возвращаемые значения

Возвращает новый курсор.

Примеры

Пример #1 MongoCommandCursor::createFromDocument()

<?php
$m 
= new MongoClient;
$d $m->demo;

// Определяет конвейер агрегации
$pipeline = [
    [ 
'$group' => [
        
'_id' => '$country_code',
        
'timezones' => [ '$addToSet' => '$timezone' ]
    ] ],
    [ 
'$sort' => [ '_id' => ] ],
];

// Выполняет команду. Параметр "cursor" указывает серверу возвращать 
// информацию о курсоре в ответе вместо внутренних результатов.
$r $d->command(
    [
        
'aggregate' => 'cities',
        
'pipeline' => $pipeline,
        
'cursor' => [ 'batchSize' => ],
    ],
    
null,
    
$hash
);

// Показывает результат и хэш
var_dump$r$hash );

// Создает курсор команды
$cursor MongoCommandCursor::createFromDocument$m$hash$r );
?>

Результатом выполнения данного примера будет что-то подобное:

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"

Как видите, возвращаемая информация о курсоре имеет поля id, ns и firstBatch.

Смотрите также