2016-08-21 3 views
1

Ich muss eine Reihe von Dokumenten (offset) aus einer Abfrage überspringen, und nur limit Anzahl der Dokumente, die danach gehen. Ich weiß, dass der folgenden naiven Ansatz:Wie stelle ich `skip` (Offset) für reactivemongo mongodb Treiber ein?

collection.find(BSONDocument()) 
    .cursor[T].collect[List](offset+limit).map(_.drop(offset)) 

aber es ist nicht wirklich erwünscht, da es offset+limit Anzahl der Dokumente in JVM-Speicher geladen werden kann, während ich sie auf der „Datenbank“ Seite filtern möchte.

Antwort

4

Lösung: QueryOpts verwenden. Beispiel:

collection.find(BSONDocument()) 
    .options(QueryOpts(skipN = offset)) 
    .cursor[T].collect[List](limit) 

Beachten Sie, dass skip Verwendung ist nicht sehr effizient, da mongodb nicht wirksam Paginierung nicht unterstützt, es wird nur die gewünschte Nummer überspringen, indem alle durch die Dokumente laufen.

Verwandte Themen