foreach循环和while循环之间的mongoDB游标区别
Posted
技术标签:
【中文标题】foreach循环和while循环之间的mongoDB游标区别【英文标题】:mongoDB cursor difference between foreach loop and while loop 【发布时间】:2016-07-08 21:54:02 【问题描述】:我正在使用 mongoDB php,当我使用 find 查询或聚合框架时,结果是一个游标,我可以使用 foreach 循环或 while 循环遍历游标。例如我有以下查询要执行
$result = $collection->find();
我可以使用以下两种方法迭代结果
1- foreach($result as $mongoid => $doc)
echo "mongoid is " . $mongoid;
print_r($doc);
2- while ( $result->hasNext() )
$doc = $result->getNext();
$result->next();
print_r( $doc );
echo "find one doc in cursor\n";
上述哪种迭代方法最好,为什么?
【问题讨论】:
【参考方案1】:在这种情况下,使用 foreach
或 while
没有任何显着差异。读取循环性能是相同的。使用foreach
使您的代码更具可读性。
您可以在The PHP Benchmark 上检查写入/读取循环性能。
【讨论】:
当我们只讨论foreach循环和while循环时,您可能会写,但是您必须考虑到这一点,当使用foreach循环时,不使用MongoDB Cursor方法,而是使用While循环迭代我使用了 MongoDB 游标方法,例如:-hasNext() 和 getNext()。代码仍然没有性能差异或任何其他差异吗? 我不确定(您必须对其进行基准测试),但我真的认为您示例中的foreach
循环应该比 while 循环更快,因为它不使用游标方法,而只使用核心 php方法。以上是关于foreach循环和while循环之间的mongoDB游标区别的主要内容,如果未能解决你的问题,请参考以下文章