MongoDB\Driver\Cursor::isDead
(mongodb >=1.0.0)
MongoDB\Driver\Cursor::isDead — Проверяет, исчерпан ли курсор или может содержать дополнительные результаты
Описание
Проверяет, нет ли у курсора дополнительных результатов. Этот метод аналогичен методу » cursor.isExhausted() в оболочке MongoDB и в первую очередь полезен при выполнении итерации » хвостовых курсоров.
Курсор не имеет дополнительных результатов и считается "мертвым", если выполняется одно из следующих условий:
- Текущий пакет был полностью повторен и идентификатор курсора равен нулю (то есть » getMore не может быть выполнен).
- Произошла ошибка при итерации курсора.
- Курсор достиг своего установленного предела.
Преднамеренно не всегда возможно определить, имеет ли курсор дополнительные результаты. Случаи, когда курсор может иметь больше доступных данных, следующие:
- В текущем пакете есть дополнительные документы, которые буферизируются на стороне клиента. Итерация извлечет документ из локального буфера.
- В текущем пакете нет дополнительных документов (то есть локального буфера), но идентификатор курсора не равен нулю. Итерация будет запрашивать больше документов с сервера с помощью операции » getMore, которая может возвращать или не возвращать дополнительные результаты и/или указывать, что курсор был закрыт на сервере, возвращая ноль для его идентификатора.
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Возвращает true
, если курсор не содержит никаких дополнительных результатов и false
в противном случае.
Ошибки
- При ошибке парсинга аргумента бросает исключение MongoDB\Driver\Exception\InvalidArgumentException.
Примеры
Пример #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)
Смотрите также
- » Хвостовые курсоры в руководстве MongoDB
- » cursor.isExhausted() в руководстве MongoDB