Как подсчитать документы с запросом в ReactiveMongo с библиотекой Play JSON?

Предположим, у меня есть коллекция users с атрибутом age. Теперь я хочу подсчитать либо все документы в коллекции users, либо только те, которые соответствуют атрибуту age. Итак, я сделал следующее:

  def count(age: Option[Int] = None) = {
    if (age.isEmpty) roles.count()
    else users.count(Json.obj("age" -> age))
  }

Проблема в том, что users.count(Json.obj("age" -> age)) выдает ошибку компиляции, потому что метод count, предоставляемый реактивным монго, ожидает тип Option[pack.Document]. Любая идея, как я могу это исправить?

Я использую Reactive Mongo версии 0.11.11, если это имеет значение.


person John Doe    schedule 19.05.2016    source источник


Ответы (1)


Как сказано, он ожидает Option из pack.Document, также известного как BSONDocument, когда pack является сериализацией BSON, или JsObject, когда с помощью Play JSON.

users.count(Some(Json.obj("age" -> age)))
person cchantep    schedule 19.05.2016
comment
Спасибо, я не могу поверить, что пропустил это. - person John Doe; 19.05.2016
comment
Этот подход устарел. - person Saeed Zarinfam; 14.10.2018
comment
Нет, просто есть новый/улучшенный .count - person cchantep; 14.10.2018