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.
}