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