sql >> Databáze >  >> NoSQL >> MongoDB

Efektivní způsob stránkování s MongoDB a ASP.NET MVC

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



  1. Mongoose vyberte pole subdoc

  2. Nelze načíst soubor nebo sestavení System.Runtime.CompilerServices.Unsafe

  3. Jak aktualizovat vložený dokument v MongoDB pomocí Doctrine ODM

  4. Statistiky Redis