ReactiveMongo Pagination с графом - PullRequest
       27

ReactiveMongo Pagination с графом

0 голосов
/ 21 февраля 2019

Я пытаюсь реализовать разбиение на страницы с помощью Reactive Mongo.

def get(page: Int, pageSize: Int, filter: JsObject = Json.obj()): Future[Seq[Thing]] = {
    val actualPage = if(page > 1) page else 1
    collection
      .find(filter)
      .options(QueryOpts(skipN = (actualPage - 1) * pageSize, batchSizeN = pageSize))
      .cursor[Thing]()
      .collect[Seq](pageSize, Cursor.FailOnError[Seq[Thing]]())
}

Это работает и возвращает мне последовательность фильтрации документов по page и pageSize.Проблема в том, что я понятия не имею, сколько результатов соответствует указанному запросу, поэтому я не могу сказать, сколько существует page.

Есть ли способ, которым я также могу получить $count как частьтот же запрос?Или мне нужно обратиться к базе данных во второй раз с помощью приведенного ниже?

collection.count(filter)

В идеале я бы изменил свой тип возвращаемого значения на Future[Page[Seq[Thing]]], где Page будет содержать общее количество результатов.например,

case class Page[T](results: Seq[T], count: Int)
...