Bereichsabfrage für MongoDB-Paginierung

Ich möchte die Paginierung auf einer MongoDB implementieren. Bei meiner Bereichsabfrage habe ich über die Verwendung von ObjectIDs nachgedacht:

db.tweets.find({ _id: { $lt: maxID } }, { limit: 50 })

Jedoch,laut den docsbedeutet die Struktur der ObjectID, dass "ObjectId-Werte keine strikte Einfügereihenfolge darstellen":

Die Beziehung zwischen der Reihenfolge der ObjectId-Werte und der Generierungszeit ist nicht innerhalb einer Sekunde streng.Wenn mehrere Systeme oder mehrere Prozesse oder Threads auf einem einzelnen System innerhalb einer Sekunde Werte generieren; ObjectId-Werte repräsentieren keine strikte Einfügereihenfolge. Taktversatz zwischen Clients kann auch für Werte zu einer nicht strengen Reihenfolge führen, da Clienttreiber ObjectId-Werte und nicht den mongod-Prozess generieren.

Ich habe mir dann überlegt, mit einem Zeitstempel abzufragen:

db.tweets.find({ created: { $lt: maxDate } }, { limit: 50 })

Es gibt jedoch keine Garantie dafür, dass das Datum eindeutig ist. Es ist sehr wahrscheinlich, dass zwei Dokumente innerhalb derselben Sekunde erstellt werden. Dies bedeutet, dass Dokumente beim Blättern möglicherweise übersehen werden.

Gibt es eine Art von Fernabfrage, die mir mehr Stabilität verschafft?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage