foreach循环和while循环之间的mongoDB游标差异

foreach循环和while循环之间的mongoDB游标差异,mongodb,mongodb-query,aggregation-framework,php-mongodb,Mongodb,Mongodb Query,Aggregation Framework,Php Mongodb,我使用的是mongoDB PHP,当我使用find查询或聚合框架时,结果是一个游标,我可以使用foreach循环或while循环迭代游标。例如,我要执行以下查询 $result = $collection->find(); 我能够使用以下两种方法对结果进行迭代 1- foreach($result as $mongoid => $doc) { echo "mongoid is " . $mongoid; print_r($doc); } 2

我使用的是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";

   }

上面哪种迭代方法最好?为什么?

在这种情况下,使用
foreach
while
时没有任何显著差异。读循环性能是相同的。使用
foreach
使代码更具可读性。
您可以在上检查写/读循环性能。

在这种情况下,使用
foreach
while
时没有任何显著差异。读循环性能是相同的。使用
foreach
使代码更具可读性。
您可以检查写入/读取循环的性能。

当我们只讨论foreach循环和while循环时,您可能正在写入,但您必须考虑到,当使用foreach循环时,没有使用MongoDB游标方法,但在while循环进行迭代时,我使用了MongoDB游标方法,例如:-hasNext()和getNext()。代码是否仍然没有性能差异或任何其他差异?我不确定(您必须对其进行基准测试)但我真的认为,您示例中的
foreach
循环应该比while循环快,因为它不使用游标方法,而只使用核心php方法。当我们只讨论foreach循环和while循环时,您可能会这样写,但您必须考虑到这一点,当使用foreach循环时,不使用MongoDB Cursor方法,但对于While循环进行迭代,我使用了MongoDB Cursor方法,例如:-hasNext()和getNext()。代码是否仍然没有性能差异或任何其他差异?我不确定(您必须对其进行基准测试),但我确实认为示例中的
foreach
循环应该比while循环快,因为它不使用游标方法,而只使用核心php方法。