Heim  >  Artikel  >  Web-Frontend  >  Wie implementiert man eine optimale Paginierung in MongoDB?

Wie implementiert man eine optimale Paginierung in MongoDB?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-24 06:54:02762Durchsuche

How to Implement Optimal Pagination in MongoDB?

(Implementierung der Paginierung in MongoDB)

Übersprungsbasierte Paginierung wird aufgrund des Speicherverbrauchs nicht für große Datensätze empfohlen. Ein alternativer Ansatz für die Paginierung ist die Verwendung der natürlichen Reihenfolge nach dem _id-Feld. Allerdings ist das Abrufen der _id des letzten Dokuments eine Herausforderung für Anfänger.

(Forward Paging)**

Forward Paging beinhaltet das Durchlaufen von Seiten in sequentieller Reihenfolge und das Speichern der _id des letzten Elements auf jeder Seite.

Für eine natürliche Reihenfolge wie _id ist der Vorgang einfach:

  1. Suchen Sie die erste Seite: db.users.find().limit( pageSize).
  2. Rufen Sie die _id des letzten Dokuments ab: last_id = ....
  3. Suchen Sie die nächste Seite: users = db.users.find({'_id' > last_id} ). limit(10);.

(Nicht-natürliche Ordnung)**

Für nicht-natürliche Ordnungen wie Rang wird der Prozess komplexer :

  1. Speichern Sie auf der ersten Seite die _ids der abgerufenen Dokumente und den lastSeen-Rang:

    • var seenIds = [];, var lastSeen = null;
    • Speichern Sie _id und aktualisieren Sie lastSeen, während Sie durch den Cursor iterieren.
  2. Schließen Sie auf nachfolgenden Seiten gesehene _ids aus und rufen Sie Dokumente mit einem Rang kleiner oder gleich lastSeen ab :

    • db.junk.find( {_id: { $nin: seenIds }, rank: $lte: lastSeen } ).sort({ "rank": -1 }).limit(2 );

(Überlegungen)**

  • Führen Sie eine Liste der gesehenen _ids, um Ergebnisse auf nachfolgenden Seiten auszuschließen.
  • Speichern Sie den lastSeen-Wert und verwerfen Sie gesehene _ids, wenn sich der Rang ändert (für nicht-natürliche Bestellungen).

Das obige ist der detaillierte Inhalt vonWie implementiert man eine optimale Paginierung in MongoDB?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn