sql >> Database >  >> NoSQL >> MongoDB

Efficiënte manier van paging met MongoDB en ASP.NET MVC

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



  1. Converteer JSON-queryvoorwaarden naar MongoDB/Mongoose-bewerkingen

  2. Verwijder duplicaten op mongodb

  3. Gids voor Upsert in MongoDB

  4. Hoe lees je de verzameling in brokken per 1000 door?