MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wydajny sposób stronicowania z MongoDB i ASP.NET MVC

Możesz użyć SetLimit na kursorze reprezentującym zapytanie. To ograniczy wyniki z MongoDB , nie tylko w pamięci:

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

Możesz także użyć SetSkip ustawić pominięcie (o dziwo):

cursor.SetSkip(10);

Uwaga: Musisz ustawić te właściwości na kursorze przed wyliczając to. Ustawienie tych po nie przyniesie żadnego efektu.

Przy okazji, nawet jeśli używasz tylko Linq Skip i Take nie będziesz pobierać tysięcy dokumentów. MongoDB automatycznie partiami wynik według rozmiaru (pierwsza partia to około 1mb , reszta to 4mb każdy), więc dostaniesz tylko pierwszą partię i wyjmiesz z niej pierwszych 50 dokumentów. Więcej na

Edytuj: Myślę, że jest trochę zamieszania co do LINQ tutaj:

Skip i Take są metodami rozszerzającymi na obu IEnumerable i IQueryable . IEnumerable jest przeznaczony do kolekcji pamięci, ale IQueryable operacje są tłumaczone przez konkretnego dostawcę (w tym przypadku sterownik C#). Więc powyższy kod jest równoważny z:

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. $expr arrayElementAt nie działa w agregacji dla osadzonego dokumentu

  2. MongoDB $in z podzapytanie

  3. Optymalne indeksy złożone dla $exists :true (rzadkie indeksy)

  4. MongoDB:unikalny klucz w osadzonym dokumencie

  5. zalecany sposób instalacji mongodb na elastycznej łodydze fasoli