MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara paging yang efisien dengan MongoDB dan ASP.NET MVC

Anda dapat menggunakan SetLimit pada kursor yang mewakili kueri. Itu akan membatasi hasil dari MongoDB , tidak hanya di memori:

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

Anda juga dapat menggunakan SetSkip untuk menyetel lompatan (mengejutkan):

cursor.SetSkip(10);

Catatan: Anda harus mengatur properti tersebut pada kursor sebelum menghitungnya. Menyetelnya setelahnya tidak akan berpengaruh.

Omong-omong, meskipun Anda hanya menggunakan Linq Skip dan Take Anda tidak akan mengambil ribuan dokumen. MongoDB secara otomatis mengelompokkan hasil berdasarkan ukuran (batch pertama sekitar 1mb , sisanya 4mb masing-masing) sehingga Anda hanya akan mendapatkan batch pertama dan mengambil 50 dokumen pertama darinya. Selengkapnya tentang

Sunting: Saya pikir ada beberapa kebingungan tentang LINQ di sini:

Skip dan Take adalah metode ekstensi pada kedua IEnumerable dan IQueryable . IEnumerable dimaksudkan untuk dalam koleksi memori, tetapi IQueryable operasi diterjemahkan oleh penyedia tertentu (driver C# dalam kasus ini). Jadi kode di atas setara dengan:

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. Dalam pencarian MongoDB dalam array dan urutkan berdasarkan jumlah kecocokan

  2. Driver MongoDB C#, kueri oleh elemen array menggunakan regex

  3. mongod shell tidak memulai, data/db tidak ada

  4. Node.js mongodb driver async/menunggu kueri

  5. Buat skrip untuk membuat koleksi MongoDB dari Mongo shell?