PHP Conference Kansai 2025

MongoDB\Driver\Cursor::isDead

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::isDeadVerifica si el cursor está agotado o puede tener resultados adicionales

Descripción

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

Verifica si no hay más resultados adicionales disponibles en el cursor. Este método es similar al método » cursor.isExhausted() en el shell de MongoDB y su utilidad principal es durante la iteración de » cursores de cola.

Un cursor no tiene más resultados adicionales y se considera "muerto" si cumple una de las siguientes condiciones:

  • El lote actual ha sido completamente iterado y el ID del cursor es cero (es decir, es imposible entregar un » getMore).
  • Se ha encontrado un error durante la iteración del cursor.
  • El cursor ha alcanzado su límite configurado.

Por su diseño, no siempre es posible determinar si un cursor tiene resultados adicionales. Los casos en los que un cursor puede tener más datos disponibles son los siguientes:

  • Hay documentos adicionales en el lote actual, que están en el búfer del lado del cliente. Iterar recuperará un documento del búfer local.
  • No hay documentos adicionales en el lote actual (es decir, búfer local), pero el ID del cursor es diferente de cero. Iterar solicitará más documentos desde el servidor a través de una operación » getMore, que devolverá o no resultados adicionales y/o indicará que el cursor ha sido cerrado en el servidor devolviendo cero para su ID.

Parámetros

Esta función no tiene parámetros.

Valores devueltos

Devuelve true si se confirma que no hay resultados adicionales disponibles en el cursor, y false en caso contrario.

Errores/Excepciones

Ejemplos

Ejemplo #1 Ejemplo con 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());

?>

El resultado del ejemplo sería algo similar a:

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

Ver también

add a note

User Contributed Notes

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