Я пишу приложение 2.3.2 для игры. В моем приложении я использую базу данных MongoDB. У меня есть рекомендация.tags и collections.request коллекции. Они имеют следующий формат JSON: 1) recommendation.tags:Ошибка при запросе счетчика на mongodb с использованием reactivemongo
{
"_id" : ObjectId("542e65fb7ab45a4189944137"),
"tag" : "Meat:Pork - Bacon Cooked Slcd"
}
2) recommendation.requests
{
"_id" : ObjectId("542e67e07f724fc2af28ba74"),
"id" : "6649fd2b-c616-4693-aec5-a2a2a1658417",
"user" : {
"id" : "",
"email" : "[email protected]"
},
"tags" : [
{
"tag" : "Fish:Swordfish Loin Portions"
},
{
"tag" : "Vegetable:Carrots - Jumbo"
}
],
"date" : 1412327392380
}
Я пишу контроллер для обработки все запроса статистики. В этом случае я пишу метод, который ищет наиболее используемый тег в системе. Для этого я использую реактивный монго-драйвер для scala. Это код используется:
/**
* Method that search the most used tag.
*/
def max = Action {
var max = 0
var tag = null
val tags: Future[List[Tag]] = Tags.find(Json.obj()).toList
for{
tag <- tags
tagsOk <- Requests.find(Json.obj("tags.tag" -> tag.category + " " + tag.name)).count
if(tagsOk > max) {
max = tagsOk
tag = tag.category + " " + tag.name //string tag
}
}
Ok(tag)
}
Но компилятор дает мне следующие ошибки:
[error] /Users/alberto/git/bdrim/modules/recommendation-system/app/recommendationsystem/controllers/manager/StatisticsController.scala:28: identifier expected but string literal found.
[error] tagsOk <- Requests.find(Json.obj("tag" : tag.category + " " + tag.name)).count
[error] ^
[error] /Users/alberto/git/bdrim/modules/recommendation-system/app/recommendationsystem/controllers/manager/StatisticsController.scala:33: ')' expected but '}' found.
[error] }
[error] ^
[error] two errors found
[error] (compile:compile) Compilation failed
Что случилось ??
@edit
[error] /Users/alberto/git/bdrim/modules/recommendation-system/app/recommendationsystem/controllers/manager/StatisticsController.scala:28: value category is not a member of List[recommendationsystem.models.Tag]
[error] tagsOk <- Requests.find(Json.obj("tags.tag" -> tag.category + " " + tag.name)).count
[error]
@newedit
Я решил, используя этот код:
val tags = for{
tags <- futureTags
}
for(document <- tags) {
val tagsOk = Requests.find(Json.obj("tags.tag" -> document.category))
}
Есть ли способ, чтобы получить список [T] и после итерации по нему в том же для ???
делает 'Json.obj ("tags.tag": tag.category + "" + tag.name)' не должно быть decalred так: 'Json.obj (» tags.tag "-> tag.category +": "+ tag.name)'? –
Да, но компилятор продолжает давать мне ошибки, см. Мой @edit –
«Теги» - это «Будущее со списком», тогда «тег <- теги» дает вам список в будущем (Future is also Collection), используйте 'tag < - tags.flatMap' вместо –