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

Pemuatan Malas/Lebih Banyak Data Gulir di Mongoose/Nodejs

Konsep umum "paging" adalah menggunakan .skip() yang pada dasarnya "melompati" hasil yang telah diambil, jadi pada dasarnya Anda dapat melakukan ini:

var q = Post.find().sort( "rating" ).skip(10).limit(10);

Tapi sungguh, seperti yang dapat Anda bayangkan, ini akan sangat melambat ketika Anda memasukkan beberapa "halaman". Jadi, Anda benar-benar menginginkan sesuatu yang lebih cerdas. Pada dasarnya ini adalah "kueri rentang" di mana Anda ingin mengambil hasil yang lebih tinggi (atau lebih rendah jika menurun) daripada kumpulan hasil terakhir yang diambil. Jadi diberi nilai terakhir 5 maka untuk lebih besar dari yang Anda lakukan:

var q = Post.find({ "rating": { "$gt": 5 } }).sort( "rating" ).limit(10);

Terlihat Oke, tapi sebenarnya masih ada masalah. Bagaimana jika "halaman" berikutnya juga berisi hasil dengan peringkat 5? Kueri ini akan melewatinya dan tidak pernah menampilkannya.

Hal cerdas yang harus dilakukan adalah "menyimpan" semua _id nilai dari dokumen karena mereka adalah kunci unik. Pada dasarnya menerapkan hal yang sama, kecuali kali ini Anda memastikan bahwa Anda tidak memasukkan hasil dari halaman sebelumnya ke halaman baru Anda. $nin operator membantu di sini:

var q = Post.find({ "rating": { "$gte": 5 }, "_id": { "$nin": seenIds } })
    .sort( "rating" ).limit(10);

Apakah seenIds hanya halaman terakhir dari hasil atau lebih tergantung pada "kepadatan" dari nilai yang Anda urutkan, dan tentu saja Anda perlu "menyimpan" ini dalam variabel sesi atau sesuatu.

Namun cobalah untuk menyesuaikan ini, karena kueri rentang biasanya merupakan hasil performa terbaik Anda.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Statistik Visual untuk Server MongoDB Anda

  2. kolom _id luwak tidak dapat dihapus

  3. Cara menggunakan $regex di dalam $or sebagai Ekspresi Agregasi

  4. Cast to Number gagal untuk nilai NaN (nomor tipe) di jalur pada bidang yang dihitung Mongoose

  5. Meteor:mengunggah file dari klien ke koleksi Mongo vs sistem file vs GridFS