Můžete použít SetLimit
na kurzor, který představuje dotaz. To omezí výsledky z MongoDB , nejen v paměti:
var cursor = collection.FindAll(); // Or any other query.
cursor.SetLimit(50); // Will only return 50.
foreach (var item in cursor)
{
// Process item.
}
Můžete také použít SetSkip
pro nastavení přeskočení (překvapivě):
cursor.SetSkip(10);
Poznámka: Tyto vlastnosti musíte nastavit na kurzor před vyjmenovávat to. Nastavení těchto po nebude mít žádný účinek.
Mimochodem, i když používáte pouze Linq Skip a Take nebudete získávat tisíce dokumentů. MongoDB automatické dávkování
výsledek podle velikosti (první dávka je asi 1mb , zbytek je 4mb každý), takže byste získali pouze první dávku a vzali byste z ní prvních 50 dokumentů. Více na
Upravit: Myslím si, že ohledně LINQ je nějaký zmatek zde:
Skip a Take jsou metody rozšíření na obou IEnumerable a IQueryable . IEnumerable je určeno pro sbírky paměti, ale IQueryable operace jsou přeloženy konkrétním poskytovatelem (v tomto případě ovladač C#). Výše uvedený kód je tedy ekvivalentní s:
foreach (var item in collection.AsQueryable().SetLimit(50))
{
// Process item.
}