Как насчет использования Cursor
?
Я думаю, что это решит вашу проблему:
def countEntriesForReport(reportId: String): Future[List[User]] = {
// the cursor of documents
val found = collection.map(_.find(selector = Json.obj("reportId" -> reportId),
projection = Option.empty[BSONDocument]).cursor[User]())
// build (asynchronously) a list containing all of the users
found.flatMap(_.collect[List](-1, Cursor.FailOnError[List[User]]()))
}
// Now using the function
countEntriesForReport("85").map(list => println("Count: " + list.size))
Эта функция вернет результат запроса в виде Future
изList[User]
.Поэтому мы должны использовать .map
после вызова функции, чтобы разрешить результат Future и затем получить его размер.
Я тестировал этот код с ReactiveMongo version 0.16.2
.Надеюсь, это будет работать и с 0.17.1
.