foreach循环和while循环之间的mongoDB游标差异
我使用的是mongoDB PHP,当我使用find查询或聚合框架时,结果是一个游标,我可以使用foreach循环或while循环迭代游标。例如,我要执行以下查询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
$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方法。