MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Ефективен начин за страниране с MongoDB и ASP.NET MVC

Можете да използвате SetLimit върху курсора, който представлява заявката. Това ще ограничи резултатите от MongoDB , не само в паметта:

var cursor = collection.FindAll(); // Or any other query.
cursor.SetLimit(50); // Will only return 50.
foreach (var item in cursor)
{
    // Process item.
}

Можете също да използвате SetSkip за да зададете пропуск (изненадващо):

cursor.SetSkip(10);

Забележка: Трябва да зададете тези свойства на курсора преди изброявайки го. Задаването на тези след това няма да има ефект.

Между другото, дори ако използвате само Linq Skip на и Take няма да извличате хиляди документи. MongoDB автоматично пакетира резултатът по размер (първата партида е около 1mb , останалите са 4mb всеки), така че ще получите само първата партида и ще вземете първите 50 документа от нея. Повече на

Редактиране: Мисля, че има известно объркване относно LINQ тук:

Skip и Take са методи за разширение и на IEnumerable и IQueryable . IEnumerable е предназначено за колекции от памет,но IQueryable операциите са преведени от конкретния доставчик (C# драйвера в този случай). Така горният код е еквивалентен на:

foreach (var item in collection.AsQueryable().SetLimit(50))
{
    // Process item.
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Бройте полета в колекция MongoDB

  2. MongoDB, Mongoose:Как да намеря поддокумент в намерен документ?

  3. MongoDB поле за преименуване на база данни в масива

  4. Премахнете _Id от обобщения отговор на mongoose

  5. MongoDB актуализиране Много()