mongo类的PHP文档说using a cursor而不是iterator_to_array
是优越的。为什么?我可以从中获得什么好处/灵活性?
答案 0 :(得分:19)
使用iterator_to_array()
会让您的驱动程序立即将所有结果加载到内存中,并且您可能很容易耗尽内存。光标不是这种情况,使用延迟加载!
直接来自链接的docs:
<?php $cursor = $collection->find(); var_dump(iterator_to_array($cursor)); ?>
...
假设在上面的例子中,
$collection
是一个50GB的集合。我们当然不希望一次性将其加载到内存中,这就是光标的用途:允许客户端以点滴和单调访问集合。