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>
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>
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>
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 && doc.rank != lastSeen ) seenIds = []; seenIds.push(doc._id); if (!cursor.hasNext() || lastSeen == null) lastSeen = doc.rank; }</code>
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>
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!