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)

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

add a note

User Contributed Notes

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