Teknik Penomboran dalam MongoDB: Melangkaui Had skip()
Adalah diakui secara meluas bahawa bergantung pada kaedah skip() untuk MongoDB penomboran boleh membawa kepada isu prestasi apabila data berkembang. Untuk menangani cabaran ini, pendekatan alternatif ialah memanfaatkan susunan semula jadi medan _id untuk penomboran.
ID Dokumen Terakhir
Inti teknik ini terletak pada menentukan ID dokumen terakhir dari halaman sebelumnya, yang kemudiannya digunakan sebagai titik permulaan untuk halaman berikutnya. Walau bagaimanapun, bagi pemula, mengenal pasti ID terakhir boleh mencabar.
Penomboran Hadapan Sahaja dengan Pemesanan _id
Untuk senario di mana penomboran ke belakang atau melangkau ke halaman tertentu bukanlah perlu, satu konsep yang dikenali sebagai "paging hadapan" boleh digunakan. Teknik ini melibatkan lelaran melalui kursor dan menyimpan _id dokumen yang terakhir dilihat untuk pertanyaan berikutnya.
Contoh dengan Pesanan _id:
cursor = db.junk.find().limit(3); while (cursor.hasNext()) { doc = cursor.next(); if (!cursor.hasNext()) lastSeen = doc._id; }
Pesanan Kompleks
Apabila menggunakan medan pesanan yang berbeza selain daripada _id, kerumitan tambahan timbul. Konsepnya tetap sama, tetapi menjadi perlu untuk mengecualikan dokumen yang dilihat sebelum ini menggunakan operator $nin.
Contoh dengan Susunan Kedudukan:
seenIds = []; cursor = db.junk.find({ "_id": { "$nin": seenIds }, "rank": "$lte": lastSeen } ).sort({ "rank": -1 }).limit(2); while (cursor.hasNext()) { doc = cursor.next(); seenIds.push(doc._id); if (!cursor.hasNext() || lastSeen == null) lastSeen = doc.rank; }
Kesimpulan:
Paging ke hadapan ialah pilihan yang berdaya maju untuk senario di mana penomboran ke belakang tidak diperlukan. Dengan menggunakan operator $nin dan mengurus ID dokumen yang dilihat, teknik ini menyediakan penomboran yang cekap tanpa isu penggunaan memori yang dikaitkan dengan langkau().
Atas ialah kandungan terperinci Bolehkah Penomboran Hadapan Sahaja dengan Pesanan Menghapuskan Had Penomboran MongoDB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!