Ok、
これは直接的な解決策ではありませんが、大まかなカーソルの問題は、最終的に IO バウンドになることです。
そこで、アプリケーションで結果をページングする機能を追加しました。
結果を (前後に) 切り替えるには、次の方法を使用します。
def findPagesWithGreaterId(pageid: String, limit: Int): List[Page] =
findAsListSortedLimit(MongoDBObject("_id" -> MongoDBObject("$gt" -> new ObjectId(pageid))), MongoDBObject("_id" -> 1), limit)
/**
* finds a slice of pages with a smaller id (required for paging)
*/
def findPagesWithSmallerId(pageid: String, limit: Int): List[Page] =
findAsListSortedLimit(MongoDBObject("_id" -> MongoDBObject("$lt" -> new ObjectId(pageid))), MongoDBObject("_id" -> 1), limit)
/**
したがって、何をするにしても、最初にカーソルのサイズを制限する必要があります。大きなカーソルは常にパフォーマンスが低下するためです。
もちろん、これは私が望んでいたエレガントなソリューションではありません。