Puede usar SetLimit
en el cursor que representa la consulta. Eso limitará los resultados de MongoDB
, no solo en la memoria:
var cursor = collection.FindAll(); // Or any other query.
cursor.SetLimit(50); // Will only return 50.
foreach (var item in cursor)
{
// Process item.
}
También puede usar SetSkip
para establecer un salto (sorprendentemente):
cursor.SetSkip(10);
Por cierto, incluso si solo usas Linq
Skip
y Take
no recuperará miles de documentos. MongoDB
lotes automáticos
el resultado por tamaño (el primer lote es de aproximadamente 1mb
, el resto son 4mb
cada uno), por lo que solo obtendría el primer lote y sacaría los primeros 50 documentos. Más sobre
Editar: Creo que hay cierta confusión sobre LINQ
aquí:
Skip
y Take
son métodos de extensión en ambos IEnumerable
y IQueryable
. IEnumerable
está destinado a colecciones de memoria, pero IQueryable
las operaciones son traducidas por el proveedor específico (el controlador C# en este caso). Así que el código anterior es equivalente a:
foreach (var item in collection.AsQueryable().SetLimit(50))
{
// Process item.
}