0

の使用を避けるように言われていることが多いiterator_to_arrayため、代わりに a を直接使用しforeach loopてフィールドを取得する必要があります。

主な理由は、 iterator_to_array が返されたすべてのドキュメントを RAM にロードすることです。

しかし、それだけです。私は尋ねます:

ものが のみONE documentを返し、そのドキュメントがのみを返す場合はどうなりますONE fieldか? iterator_to_array は、ループをスローするよりも適していませんか?

そして、ほとんどの場合projections、変数に確実に渡すフィールドだけを返すように使用しています。当然、とにかくRAMに保存されます... '-'

4

1 に答える 1

0

ループが配列内のドキュメントを収集するだけiterator_to_array()の場合は、使用しても害はありません。foreachあなたが述べたようforeachに、結果のドキュメントを一度に 1 つずつ処理し、それらをメモリに共存させる必要がない場合、その利点があります。

クエリが 1 つのドキュメントのみを返す場合は、MongoCollection::findOne()を使用して、MongoCursor を自分で反復処理しないようにすることもできます。

于 2013-06-24T21:24:01.210 に答える