【问题标题】:MongoDB - Why should I use a cursor instead of iterator_to_array (in PHP)MongoDB - 为什么我应该使用游标而不是 iterator_to_array(在 PHP 中)
【发布时间】:2011-06-30 23:08:03
【问题描述】:

mongo 类的 PHP 文档说 using a cursor 而不是 iterator_to_array 更好。

为什么?我将从中获得什么好处/灵活性?

【问题讨论】:

  • 幸运的是,这些文档自 the time this question was asked 以来已经过编辑,他们现在在您链接到的页面上清楚而明确地证明了他们的建议。

标签: php mongodb database-cursor


【解决方案1】:

使用iterator_to_array() 会使您的驱动程序一次将所有结果加载到内存中,并且您很容易耗尽内存。使用延迟加载的游标不会出现这种情况!

直接来自链接的docs

<?php

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

?>

...

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

【讨论】:

  • Im' 使用$arrResults = $cursor-&gt;toArray();,当大记录时我崩溃了。也许这也会一次将所有结果加载到内存中。如何将所有值返回给客户端
猜你喜欢
  • 2016-05-23
  • 2012-10-16
  • 2018-05-10
  • 2014-03-12
  • 2012-12-13
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多