Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Melaksanakan Penomboran Cekap dalam MongoDB Menggunakan _id dan Paging Hadapan?

Bagaimana untuk Melaksanakan Penomboran Cekap dalam MongoDB Menggunakan _id dan Paging Hadapan?

Mary-Kate Olsen
Lepaskan: 2024-10-24 06:55:02
asal
1105 orang telah melayarinya

How to Implement Efficient Pagination in MongoDB Using _id and Forward Paging?

Cara Melaksanakan Penomboran dalam MongoDB

Walaupun menggunakan langkau biasanya tidak digalakkan untuk penomboran kerana penggunaan ingatannya pada skala, pendekatan alternatif ialah untuk memanfaatkan medan _id untuk pesanan semula jadi.

Mendapatkan _id Dokumen Terakhir

Untuk mendapatkan _id dokumen terakhir pada halaman tertentu, anda boleh menggunakan yang berikut pendekatan:

<code class="javascript">db.users.find().limit(pageSize);
//Find the id of the last document in this page
last_id = ...;</code>
Salin selepas log masuk

Paging Hadapan

Daripada menggunakan .skip() dan .limit(), paging ke hadapan melibatkan lelaran melalui kursor dan menyimpan yang terakhir dilihat _id. Pada lelaran berikutnya, pertanyaan diubah suai untuk mengecualikan dokumen yang telah dilihat, sementara juga mengehadkan keputusan kepada mereka yang mempunyai _id yang lebih rendah atau sama dengan nilai terakhir dilihat.

Untuk susunan semula jadi mengikut _id, kod tersebut akan kelihatan seperti ini:

<code class="javascript">var lastSeen = null;
var cursor = db.junk.find().limit(3);

while (cursor.hasNext()) {
   var doc = cursor.next();
   if (!cursor.hasNext())
     lastSeen = doc._id;
}</code>
Salin selepas log masuk

Pertanyaan Diubah Suai untuk Halaman Seterusnya

Pertanyaan berikut digunakan untuk mendapatkan semula halaman seterusnya:

<code class="javascript">var cursor = db.junk.find({ "_id": { "$gt": lastSeen } }).limit(3);</code>
Salin selepas log masuk

Isih Kompleks

Untuk mengisih mengikut medan selain _id, seperti pangkat, anda perlu menjejaki dokumen yang dilihat sebelum ini dan menggunakan pengendali $nin untuk mengecualikannya.

Berikut ialah contoh coretan kod untuk halaman hadapan dengan pengisihan mengikut pangkat:

<code class="javascript">var lastSeen = null;
var seenIds = [];
var cursor = db.junk.find().sort({ "rank": -1 }).limit(2);

while (cursor.hasNext()) {
   var doc = cursor.next();
   if ( lastSeen != null &amp;&amp; doc.rank != lastSeen )
       seenIds = [];
   seenIds.push(doc._id);
   if (!cursor.hasNext() || lastSeen == null)
     lastSeen = doc.rank;
}</code>
Salin selepas log masuk

Pertanyaan seterusnya untuk halaman seterusnya ialah:

<code class="javascript">var cursor = db.junk.find(
    { "_id": { "$nin": seenIds }, "rank": "$lte": lastSeen }
).sort({ "rank": -1 }).limit(2);</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Penomboran Cekap dalam MongoDB Menggunakan _id dan Paging Hadapan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan