Heim >Backend-Entwicklung >Golang >Wie implementiert man effizientes Paging in MongoDB mit mgo.v2 ohne native Cursor.min()-Unterstützung?
Effizientes Paging in MongoDB mit mgo unter Verwendung von Cursor.min()
Die Paging-Funktionen von MongoDB werden üblicherweise mit Query.Skip() und Query implementiert .Limit() kann langsam werden, wenn die Seitenzahl zunimmt. Um dieses Problem zu beheben, hat MongoDB Cursor.min() eingeführt, mit dem der erste Indexeintrag angegeben werden kann, ab dem mit der Auflistung der Ergebnisse begonnen werden soll.
Einschränkungen von mgo.v2
Leider Dem MGO.v2-Treiber fehlt die Unterstützung für Cursor.min(). Diese Funktionalität kann jedoch mithilfe der Database.Run()-Methode erreicht werden, um MongoDB-Befehle, einschließlich des Suchbefehls, auszuführen.
Effizientes Paging manuell implementieren
Verwenden github.com/icza/minquery
Das Minquery-Paket stellt einen Wrapper bereit, der den Prozess der Ausführung eines Suchbefehls mit Cursor.min()-Unterstützung vereinfacht.
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")
Hinweis: Geben Sie bei Verwendung von minquery.All() beim Dekodieren der Ergebnisse die Namen der Cursorfelder an, auch wenn diese nicht direkt verwendet werden. Dies ist entscheidend für die Generierung der Cursordaten für nachfolgende Abfragen.
Das obige ist der detaillierte Inhalt vonWie implementiert man effizientes Paging in MongoDB mit mgo.v2 ohne native Cursor.min()-Unterstützung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!