MongoDB - 为什么我应该使用游标而不是iterator_to_array(在PHP中)

时间:2011-02-20 23:44:05

标签: php mongodb cursor

mongo类的PHP文档说using a cursor而不是iterator_to_array是优越的。为什么?我可以从中获得什么好处/灵活性?

1 个答案:

答案 0 :(得分:19)

使用iterator_to_array()会让您的驱动程序立即将所有结果加载到内存中,并且您可能很容易耗尽内存。光标不是这种情况,使用延迟加载!

直接来自链接的docs

<?php

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

?>
     

...

     

假设在上面的例子中, $collection 是一个50GB的集合。我们当然不希望一次性将其加载到内存中,这就是光标的用途:允许客户端以点滴和单调访问集合。