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

Mary-Kate Olsen
Lepaskan: 2024-10-24 06:55:02
asal
980 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!

sumber: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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!