U kunt SetLimit
gebruiken
op de cursor die de query vertegenwoordigt. Dat beperkt de resultaten van MongoDB
, niet alleen in het geheugen:
var cursor = collection.FindAll(); // Or any other query.
cursor.SetLimit(50); // Will only return 50.
foreach (var item in cursor)
{
// Process item.
}
Je kunt ook SetSkip
gebruiken
om een sprong in te stellen (verrassend genoeg):
cursor.SetSkip(10);
Opmerking: U moet die eigenschappen op de cursor voor . zetten het opsommen. Als u die daarna instelt, heeft dit geen effect.
Trouwens, zelfs als je alleen Linq
. gebruikt 's Skip
en Take
u haalt geen duizenden documenten op. MongoDB
automatisch batches
het resultaat op grootte (eerste batch is ongeveer 1mb
, de rest is 4mb
elk), zodat u alleen de eerste batch krijgt en de eerste 50 documenten eruit haalt. Meer over
Bewerken: Ik denk dat er wat verwarring is over LINQ
hier:
Skip
en Take
zijn extensiemethoden op beide IEnumerable
en IQueryable
. IEnumerable
is bedoeld voor in geheugenverzamelingen, maar IQueryable
bewerkingen worden vertaald door de specifieke provider (in dit geval de C#-driver). Dus de bovenstaande code is gelijk aan:
foreach (var item in collection.AsQueryable().SetLimit(50))
{
// Process item.
}