MongoDB\Driver\Cursor::isDead

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::isDeadVerifica se o cursor está esgotado ou pode ter resultados adicionais

Descrição

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

Verifica se definitivamente não há resultados adicionais disponíveis no cursor. Este método é semelhante ao método » cursor.isExhausted() no shell do MongoDB e é útil principalmente ao iterar » cursores adaptáveis.

Um cursor não tem resultados adicionais e é considerado "morto" quando uma das seguintes opções for verdadeira:

  • O lote atual foi totalmente iterado e o ID do cursor é zero (ou seja, um » getMore não pode ser emitido).
  • Foi encontrado um erro ao iterar o cursor.
  • O cursor atingiu o limite configurado.

Por padrão, nem sempre é possível determinar se um cursor possui resultados adicionais. Os casos em que um cursor pode ter mais dados disponíveis são os seguintes:

  • Existem documentos adicionais no lote atual, que são armazenados em buffer no lado do cliente. A iteração irá buscar um documento do buffer local.
  • Não há documentos adicionais no lote atual (ou seja, buffer local), mas o ID do cursor é diferente de zero. A iteração solicitará mais documentos do servidor por meio de uma operação » getMore, que pode ou não retornar resultados adicionais e/ou indicar que o cursor foi fechado no servidor retornando zero para seu ID.

Parâmetros

Esta função não possui parâmetros.

Valor Retornado

Retorna true se definitivamente não houver resultados adicionais disponíveis no cursor e false caso contrário.

Erros/Exceções

Exemplos

Example #1 Exemplo de 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());

?>

O exemplo acima produzirá:

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

Veja Também