(PECL mongo >=1.5.0)
MongoCommandCursor::createFromDocument — Создает новый курсор команды из существующего ответа команды документа
$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' => 1 ] ],
];
// Выполняет команду. Параметр "cursor" указывает серверу возвращать
// информацию о курсоре в ответе вместо внутренних результатов.
$r = $d->command(
[
'aggregate' => 'cities',
'pipeline' => $pipeline,
'cursor' => [ 'batchSize' => 1 ],
],
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.