MongoDB\Driver\Cursor::isDead

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::isDeadПроверяет, исчерпан ли курсор или может содержать дополнительные результаты

Описание

final public MongoDB\Driver\Cursor::isDead ( ) : bool

Проверяет, нет ли у курсора дополнительных результатов. Этот метод аналогичен методу » cursor.isExhausted() в оболочке MongoDB и в первую очередь полезен при выполнении итерации » хвостовых курсоров.

Курсор не имеет дополнительных результатов и считается "мертвым", если выполняется одно из следующих условий:

  • Текущий пакет был полностью повторен и идентификатор курсора равен нулю (то есть » getMore не может быть выполнен).
  • Произошла ошибка при итерации курсора.
  • Курсор достиг своего установленного предела.

Преднамеренно не всегда возможно определить, имеет ли курсор дополнительные результаты. Случаи, когда курсор может иметь больше доступных данных, следующие:

  • В текущем пакете есть дополнительные документы, которые буферизируются на стороне клиента. Итерация извлечет документ из локального буфера.
  • В текущем пакете нет дополнительных документов (то есть локального буфера), но идентификатор курсора не равен нулю. Итерация будет запрашивать больше документов с сервера с помощью операции » getMore, которая может возвращать или не возвращать дополнительные результаты и/или указывать, что курсор был закрыт на сервере, возвращая ноль для его идентификатора.

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

У этой функции нет параметров.

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

Возвращает true, если курсор не содержит никаких дополнительных результатов и false в противном случае.

Ошибки

Примеры

Пример #1 Пример использования MongoDB\Driver\Cursor::isDead()

<?php

$manager 
= new MongoDB\Driver\Manager("mongodb://localhost:27017");
$query = new MongoDB\Driver\Query([]);

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection'$bulk);

$cursor $manager->executeQuery('db.collection'$query);

$iterator = new IteratorIterator($cursor);

$iterator->rewind();
var_dump($cursor->isDead());

$iterator->next();
var_dump($cursor->isDead());

$iterator->next();
var_dump($cursor->isDead());

$iterator->next();
var_dump($cursor->isDead());

?>

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

bool(false)
bool(false)
bool(false)
bool(true)

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