Paginierungstechniken in MongoDB: Jenseits der Einschränkungen von ski()
Es ist allgemein anerkannt, dass man sich für MongoDB auf die Methode „skip()“ verlässt Die Paginierung kann bei wachsender Datenmenge zu Leistungsproblemen führen. Um dieser Herausforderung zu begegnen, besteht ein alternativer Ansatz darin, die natürliche Reihenfolge des _id-Felds für die Paginierung zu nutzen.
Die ID des letzten Dokuments
Der Kern dieser Technik liegt darin Ermitteln der ID des letzten Dokuments aus der vorherigen Seite, die dann als Ausgangspunkt für die nächste Seite verwendet wird. Für Anfänger kann es jedoch eine Herausforderung sein, die letzte ID zu identifizieren.
Nur Vorwärtspaginierung mit _id-Reihenfolge
Für Szenarien, in denen eine Rückwärtspaginierung oder das Springen zu bestimmten Seiten nicht möglich ist Bei Bedarf kann ein Konzept namens „Forward Paging“ eingesetzt werden. Bei dieser Technik wird durch einen Cursor iteriert und die _id des zuletzt gesehenen Dokuments für nachfolgende Abfragen gespeichert.
Beispiel mit _id-Reihenfolge:
cursor = db.junk.find().limit(3); while (cursor.hasNext()) { doc = cursor.next(); if (!cursor.hasNext()) lastSeen = doc._id; }
Komplexe Reihenfolge
Bei Verwendung eines anderen Bestellfeldes als _id entstehen zusätzliche Komplexitäten. Das Konzept bleibt dasselbe, es wird jedoch notwendig, zuvor angezeigte Dokumente mithilfe des $nin-Operators auszuschließen.
Beispiel mit Rangfolge:
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; }
Fazit:
Vorwärts-Paginierung ist eine praktikable Option für Szenarien, in denen keine Rückwärts-Paginierung erforderlich ist. Durch die Verwendung des $nin-Operators und die Verwaltung gesehener Dokument-IDs ermöglicht diese Technik eine effiziente Paginierung ohne die mit „skip()“ verbundenen Speicherverbrauchsprobleme.
Das obige ist der detaillierte Inhalt vonKann die Nur-Vorwärts-Paginierung mit Reihenfolge die Paginierungsbeschränkungen von MongoDB beseitigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!