Подтвердить что ты не робот

MongoDB - Почему я должен использовать курсор вместо iterator_to_array (в PHP)

Документация PHP для класса mongo говорит, что с использованием курсора вместо iterator_to_array превосходит. Зачем? Какие выгоды/гибкость я получу от этого?

4b9b3361

Ответ 1

Используя iterator_to_array(), ваш драйвер сразу загружает все результаты в память, и вы можете легко исчерпать память. Это не относится к курсору, который использует ленивую загрузку!

Прямо из связанного docs:

<?php

$cursor = $collection->find();
var_dump(iterator_to_array($cursor));

?>

...

Предположим, что в приведенном выше примере $collection была собранием 50 ГБ. Мы, конечно же, не захотели бы загружать это в память сразу, для чего предназначен курсор: разрешение клиенту получить доступ к коллекции в дрибах и серах.