PHP Conference Japan 2024

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://127.0.0.1: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