
MongoDBDriverCursor::next 메서드가 종료되는 시점에 \"MongoDBDriverCursor::next: Cursor is exhausted\" 오류가 발생하는 이는 cursor가 더 이상 데이터를 읽을 수 없다는 뜻입니다.
이 오류가 발생하는 이유는 cursor가 데이터를 모두 읽었기 때문입니다. MongoDB는 cursor를 사용하여 데이터를 읽을 때, 데이터가 모두 읽히면 cursor는 더 이상 데이터를 읽을 수 없게 됩니다.
cursor를 다시 초기화하는 방법은 다음과 같습니다.
1. 새로운 cursor를 생성하여 데이터를 읽는 방법입니다.
#hostingforum.kr
php
$cursor = $collection->find();
while ($cursor->hasNext()) {
$document = $cursor->next();
// 데이터 처리
}
2. cursor를 다시 query를 사용하여 초기화하는 방법입니다.
#hostingforum.kr
php
$cursor = $collection->find()->sort(['_id' => 1]);
while ($cursor->hasNext()) {
$document = $cursor->next();
// 데이터 처리
}
3. cursor를 다시 fetch를 사용하여 초기화하는 방법입니다.
#hostingforum.kr
php
$cursor = $collection->find()->sort(['_id' => 1]);
$cursor->batchSize(100);
while ($cursor->hasNext()) {
$documents = $cursor->fetch();
// 데이터 처리
}
위 방법 중 하나를 사용하여 cursor를 다시 초기화하여 데이터를 읽을 수 있습니다.
2025-07-05 15:51