У меня есть приложение 2.1, которое использует MongoDB
через Reactivemongo 0.8 plugin
. В моем приложении я использую описанный Подход here без использования моделейPlay 2.1 и reactivemongo 0,8 счет документов
У меня есть метод, который возвращает все документы из MongoDB, где «тип» равен параметр GetType в функции getTypeAll, например {"type": "computer"}
, который работает отлично.
def getTypeAll(getType: String) = Action {
val validatedType = getType.replaceAll("-"," ")
val q = QueryBuilder().query(toType.writes(validatedType))
Async {
val f = collection.find[JsValue](q)
f.toList.map{
jsonp =>
Ok(Json.toJson(jsonp))
}
}
}
toType записывается как val toType = OWrites[String]{ s => Json.obj("type" -> s) }
и сбор вал определяется как lazy val collection = db("mycollection")
Проблема заключается в том, что я не в состоянии написать метод, который получит количество документов, где «тип» равно один и тот же параметр.
def countTypeAll(getType: String) = Action {
}
и возвращает его как JSON, как { "typecount": 45}
Я смотрел на каждом примере я нашел, но без успеха. Я думаю, что я хочу что-то вроде val c = collection.find[JsValue](q).count()
, но он дает ошибку говоря value size is not a member of reactivemongo.api.DefaultCollection
Может кто-нибудь сказать мне, как сосчитать все документы, в которых значение элемента равна указанному значению?