SetLimit
を使用できます
クエリを表すカーソル上。これにより、MongoDB
からの結果が制限されます 、メモリ内だけでなく:
var cursor = collection.FindAll(); // Or any other query.
cursor.SetLimit(50); // Will only return 50.
foreach (var item in cursor)
{
// Process item.
}
SetSkip
を使用することもできます
スキップを設定するには(驚くべきことに):
cursor.SetSkip(10);
注: これらのプロパティは、カーソルで前に設定する必要があります それを列挙します。後で設定しても効果はありません。
ちなみに、Linq
のみを使用している場合でも のSkip
およびTake
何千ものドキュメントを取得することはありません。 MongoDB
自動的にバッチ処理
サイズ別の結果(最初のバッチは約1mb
、残りは4mb
それぞれ)したがって、最初のバッチのみを取得し、最初の50個のドキュメントを取り出します。
編集: LINQ
については混乱があると思います ここ:
Skip
およびTake
両方のIEnumerable
の拡張メソッドです および IQueryable
。 IEnumerable
インメモリコレクションを対象としていますが、しかし IQueryable
操作は、特定のプロバイダーによって翻訳されます> (この場合はC#ドライバー)。したがって、上記のコードは次のコードと同等です。
foreach (var item in collection.AsQueryable().SetLimit(50))
{
// Process item.
}