2016-03-22 18 views
1

私はmongoDB PHPを使用しています。検索クエリまたは集計フレームワークを使用すると、結果がカーソルになります。foreachループまたはwhileループを使用してカーソルを反復処理できます。私は二つの方法 mongoDB foreachループとwhileループ間のカーソルの違い

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"; 

    } 

上記の反復法の最高の理由です

次使用して結果を反復処理することができる午前

$result = $collection->find(); 

たとえば、私は次のクエリは実行する必要がありますか?

答えて

0

この場合、foreachまたはwhileを使用しても大きな違いはありません。読み取りループのパフォーマンスは同じです。 foreachを使用すると、コードを読みやすくなります。 The PHP Benchmarkで書き込み/読み取りループのパフォーマンスをチェックできます。

+0

foreachループとwhileループについて説明しますが、foreachループが使用されているときはMongoDB Cursorメソッドは使用されませんが、Whileループを使用すると、例えば、-hasNext()やgetNext()など、MongoDB Cursorメソッドを使用しました。それでもコードにはパフォーマンスの違いやその他の違いはありませんか? – Shahbaz

+0

私は確信していません(ベンチマークする必要があります)が、私は実際にあなたの例からの 'foreach'ループはwhileループよりも速くなければならないと思います。なぜなら、カーソルメソッドを使用せずコアphpメソッドしか使用しないからです。 – aokozlov

関連する問題