MongoDB\Driver\Cursor::isDead

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::isDead检查游标是否已耗尽或可能包含更多结果

说明

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

检查游标上是否绝对没有其他结果可用。此方法类似于 MongoDB shell 中的 » cursor.isExhausted() 方法,主要在迭代 » 可追溯游标 时有用。

当以下任一条件为真时,游标没有其他结果,被视为“已死”

  • 当前批次已完全迭代并且游标 ID 为零(即,无法发出 » getMore)。
  • 在迭代游标时遇到错误。
  • 游标已达到其配置的限制。

根据设计,无法始终确定游标是否包含其他结果。游标可能包含更多数据可用的情况如下

  • 当前批次中存在其他文档,这些文档缓存在客户端侧。迭代将从本地缓冲区中获取文档。
  • 当前批次(即本地缓冲区)中不存在其他文档,但游标 ID 非零。迭代将通过 » getMore 操作向服务器请求更多文档,这可能或可能不返回其他结果,或者通过为其 ID 返回零来指示游标已在服务器上关闭。

参数

此函数没有参数。

返回值

如果游标上绝对没有其他结果可用,则返回 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)

参见

添加说明

用户贡献的注释

此页面没有用户贡献的注释。
To Top