Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Melaksanakan Paging Cekap dalam MongoDB dengan mgo.v2 tanpa Sokongan Native cursor.min()?

Bagaimana untuk Melaksanakan Paging Cekap dalam MongoDB dengan mgo.v2 tanpa Sokongan Native cursor.min()?

DDD
Lepaskan: 2024-12-17 22:02:10
asal
733 orang telah melayarinya

How to Implement Efficient Paging in MongoDB with mgo.v2 without Native cursor.min() Support?

Paging Cekap dalam MongoDB dengan mgo menggunakan cursor.min()

Keupayaan halaman MongoDB, biasanya dilaksanakan menggunakan Query.Skip() dan Query .Limit(), boleh menjadi perlahan apabila nombor halaman bertambah. Untuk menangani perkara ini, MongoDB memperkenalkan cursor.min(), yang membenarkan penetapan entri indeks pertama untuk mula menyenaraikan hasil daripada.

Had mgo.v2

Malangnya, pemandu mgo.v2 tidak mempunyai sokongan untuk cursor.min(). Walau bagaimanapun, kefungsian ini boleh dicapai menggunakan kaedah Pangkalan Data.Run() untuk melaksanakan perintah MongoDB, termasuk arahan find.

Melaksanakan Paging Cekap Secara Manual

  1. Bina arahan find dengan penapis, isih, had dan secara pilihan cursor.min() argument.
  2. Laksanakan arahan menggunakan Pangkalan Data.Run() dan nyahkodkan hasilnya.
  3. Ubah keputusan kepada jenis yang diingini menggunakan Collection.NewIter().
  4. Janakan data kursor baharu daripada dokumen terakhir dalam kelompok.
  5. Gunakan pengekodan base64 untuk menukar data kursor kepada selamat web rentetan.

Menggunakan github.com/icza/minquery

Pakej minquery menyediakan pembungkus yang memudahkan proses melaksanakan arahan find dengan cursor.min () sokongan.

q := minquery.New(session.DB(""), "users", bson.M{"country" : "USA"}).
    Sort("name", "_id").Limit(10)
// If this is not the first page, set cursor:
if cursor := getLastCursor(); cursor != "" {
    q = q.Cursor(cursor)
}

var users []*User
newCursor, err := q.All(&users, "country", "name", "_id")
Salin selepas log masuk

Nota: Apabila menggunakan minquery.All(), nyatakan nama medan kursor semasa menyahkod keputusan, walaupun tidak digunakan secara langsung. Ini penting untuk menjana data kursor untuk pertanyaan seterusnya.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Paging Cekap dalam MongoDB dengan mgo.v2 tanpa Sokongan Native cursor.min()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan