SQL Server Tips, Teknik, dan Artikel

Bagaimana Menerapkan Pagination di MongoDB

carbon-18.png

[ad_1]

Konsep pagination MongoDB menarik dan kompleks. Dalam sumber ini, kita akan melihat beberapa cara Anda dapat menambahkan pagination ke aplikasi Anda menggunakan MongoDB sebagai solusi database.

MongoDB adalah solusi penyimpanan data berbasis dokumen, jadi data paging adalah persyaratan umum. Pagination juga merupakan proses intensif sumber daya, jadi melakukannya di tingkat basis data selalu merupakan ide yang bagus.

Ada beberapa metode yang dapat kita gunakan untuk mengimplementasikan pagination di MongoDB (lompat ke solusi).

Pagination adalah konsep universal di UI/UX. Menurut definisi, pagination memecah kumpulan data besar menjadi potongan yang lebih kecil dan lebih mudah dikelola sehingga pengguna dapat dengan mudah menavigasi.

Secara tradisional, mereka dipasangkan dengan kueri/filter/penyortiran.

isotropik-2022-07-08-at-15-18-17
Berikut adalah kontrol navigasi pagination pada Blog isotropik arsip

Katakanlah saya telah membangun blog / situs web konten dengan 100-an posting lama, dan yang baru ditambahkan secara konsisten.

Saya ingin menampilkan 10 posting terbaru yang diterbitkan, dan memungkinkan pengguna untuk menavigasi melalui “potongan” posting lama.

Saya akan menggunakan pagination dengan MongoDB untuk melakukan hal itu.

mongo-db-pagnation
Sekarang, mari kita terapkan!

Metode satu: Gunakan Skip + Limit

Ini adalah cara termudah untuk mengimplementasikan pagination, tetapi biasanya bukan yang terbaik atau paling efisien.

Kami akan menggunakan:

Pertama, skip(n), di mana n sama dengan jumlah dokumen untuk dilewati, pada dasarnya melompati konten. Kemudian, batas (n), di mana n sama dengan jumlah dokumen yang dikembalikan oleh kursor, hanya menunjukkan “sepotong” konten.

Dengan menggabungkan keduanya, kita dapat mengembalikan 10 dokumen, dan ketika berpindah ke “halaman” berikutnya, kita dapat melewati lebih dari 10.

Di Shell, seperti inilah tampilan perintah kami:

// Halaman 1 db.items.find().limit(10) // Halaman 2 db.items.find().skip(10).limit(10) // Halaman 3 db.items.find().skip (10).batas(10)

Penomoran halaman yang mudah di MongoDB.

Namun, meskipun metode ini bekerja dalam keadaan darurat, ini bukan pilihan terbaik untuk kumpulan data besar.

isotropik-2022-07-08-at-15-31-47

Itu karena memindai seluruh kumpulan data dari awal sampai akhir. Juga, jika dokumen baru ditambahkan, itu akan mengacaukan pagination – ini adalah pertimbangan penting, tetapi diabaikan untuk aplikasi yang lebih diperbarui secara konstan.

Metode dua: range query (+ limit)

Metode ini sebenarnya direkomendasikan dalam dokumentasi MongoDB. Berikut kutipan langsung:

Kueri rentang dapat menggunakan indeks untuk menghindari pemindaian dokumen yang tidak diinginkan, biasanya menghasilkan kinerja yang lebih baik saat offset tumbuh dibandingkan dengan menggunakan skip() untuk paginasi.

Ini adalah proses tiga langkah. Pertama, pilih bidang dengan UID, dan bidang yang berubah secara konsisten dari waktu ke waktu (misalnya, bidang _ID yang bertambah dengan setiap penambahan dokumen baru).

Kemudian, kueri untuk dokumen yang memiliki bidang kurang dari nilai awal. Mongo menyarankan menggunakan bidang _id dan mengimplementasikan $lt dan sort() operator.

Sebagai catatan, $lt akan memilih dokumen dengan nilai _id lebih kecil dari nilai yang ditentukan. Sempurna untuk pagination dan juga efisien!

Terakhir, simpan nilai bidang yang terakhir dilihat untuk kueri berikutnya.

Berikut contoh kode dari dokumen MongoDB (sebagai fungsi js):

function printStudents(startValue, nPerPage) { biarkan endValue = null; db.students.find( { _id: { $lt: startValue } } ) .sort( { _id: -1 } ) .limit( nPerPage ) .forEach( student => { print( student.name ); endValue = siswa. _Indo; } ); mengembalikan nilai akhir; }

Ini adalah metode yang lebih baik karena lebih efisien dan dapat diperpanjang. Namun itu sedikit lebih kompleks.


Dan ada dua cara agar Anda dapat dengan mudah menambahkan pagination ke MongoDB.

[ad_2]

Source link

Artikel terbaru