MongoDB\Driver\Cursor::isDead

Checks if the cursor is exhausted or may have additional results

&reftitle.description; final public `bool` `MongoDB\Driver\Cursor::isDead`

Checks whether there are definitely no additional results available on the cursor. This method is similar to the cursor.isExhausted() method in the MongoDB shell and is primarily useful when iterating tailable cursors.

A cursor has no additional results and is considered "dead" when one of the following is true:

- The current batch has been fully iterated and the cursor ID is zero (i.e. a getMore cannot be issued).
- An error was encountered while iterating the cursor.
- The cursor reached its configured limit.

By design, it is not possible to always determine whether a cursor has additional results. The cases where a cursor may have more data available is as follows:

- There are additional documents in the current batch, which are buffered on the client side. Iterating will fetch a document from the local buffer.
- There are no additional documents in the current batch (i.e. local buffer), but the cursor ID is non-zero. Iterating will request more documents from the server via a getMore operation, which may or may not return additional results and/or indicate that the cursor has been closed on the server by returning zero for its ID.

&reftitle.parameters; &no.function.parameters;
&reftitle.returnvalues;

Returns &true; if there are definitely no additional results available on the cursor, and &false; otherwise.

&reftitle.errors;

&mongodb.throws.argumentparsing;

&reftitle.examples;

### `MongoDB\Driver\Cursor::isDead` example

    <?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());

    ?>

&example.outputs;

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

&reftitle.seealso;

- Tailable Cursors in the MongoDB manual
- cursor.isExhausted() in the MongoDB manual