使用reactmongo在mongodb上进行计数查询时出错

阿尔贝托·阿达米

我正在编写一个play 2.3.2应用程序。在我的应用程序中,我使用MongoDB数据库。我有一个requestion.tags和recommendation.request集合。它们具有以下JSON格式:1)Recommendation.tags:

 {
    "_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
}

我正在编写一个处理所有统计信息请求的控制器。在这种情况下,我正在编写一种搜索系统中最常用标签的方法。为此,我将反应式mongo驱动程序用于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

怎么了??

@编辑

[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))

       }

有没有一种方法可以获取List [T]并对其进行相同的迭代?

阿尔贝托·阿达米

解决使用

def max = Action {
   var max: Int = 0
   var tagFound: Tag = null
   //obtain all the tags in the db.
   val futureTags: Future[List[Tag]] = Tags.all.toList
   futureTags map{ (tags: List[Tag]) => 
                        tags map {
                          (tag: Tag) => 
                            //create the tag String 
                            val tagName = tag.category  + ":" + tag.attr 
                            //search the documents where tags.tag == tag in the db.
                            val futureRequests : Future[List[recommendationsystem.models.Request]]= Requests.find(Json.obj("tags.tag" -> tagName)).toList
                            futureRequests map { (requests: List[recommendationsystem.models.Request]) =>
                                                    //get the numbers of documents matching the tag
                                                    val number = requests.size
                                                    if(number > max) {
                                                      max = number
                                                      tagFound = tag
                                                    }

                            }

                        }
    } 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试在 Firestore 上进行另一个查询时出错

来自分类Dev

在同一表上进行计数计算的mysql查询

来自分类Dev

在iPhone 5上进行测试时加载图像时出错

来自分类Dev

使用reactmongo的异步播放方法出错

来自分类Dev

使用PHP在MongoDB上执行查询时出错

来自分类Dev

使用LINQ在DataTable上进行LIKE查询

来自分类Dev

在Ubuntu virtualenv上进行pip安装枕头时出错

来自分类Dev

在Xerox WorkCentre 6400上进行双面打印时出错

来自分类Dev

执行mongodb嵌套查询时出错

来自分类Dev

使用where函数在我的mysql查询上进行数学运算时出现语法错误

来自分类Dev

使用WHERE子句对记录进行计数的查询

来自分类Dev

使用雄辩的关系laravel进行计数查询

来自分类Dev

使用内联查询语句进行计数

来自分类Dev

在Oracle中对列(Count1)进行计数时出错

来自分类Dev

如何使用node.js在MySQL上进行大量查询

来自分类Dev

使用LUBM数据在Marklogic上进行SPARQL查询

来自分类Dev

MongoDB:使用组对数组进行计数

来自分类Dev

无法使用PHP在mongodb上进行身份验证

来自分类Dev

在FireStore上进行简单查询

来自分类Dev

在多行上进行AND的SQL查询

来自分类Dev

使用2进行一次选择查询,查询在同一表上进行

来自分类Dev

MS Access查询-使用最新查询进行计数

来自分类Dev

使用Shiro时在Spring上进行注释,NullPointerException

来自分类Dev

在布尔列上进行过滤时在熊猫中使用FutureWarning

来自分类Dev

在CentOS 6上进行OTRS安装期间重新启动httpd时出错

来自分类Dev

在其他页面上进行变量转换时出错

来自分类Dev

PacketHandler:74-在mrniko / netty-socket.io上进行数据处理时出错?

来自分类Dev

在查询中使用“ ORDER BY count”时出错

来自分类Dev

使用Apache Jena查询DBPedia时出错

Related 相关文章

  1. 1

    尝试在 Firestore 上进行另一个查询时出错

  2. 2

    在同一表上进行计数计算的mysql查询

  3. 3

    在iPhone 5上进行测试时加载图像时出错

  4. 4

    使用reactmongo的异步播放方法出错

  5. 5

    使用PHP在MongoDB上执行查询时出错

  6. 6

    使用LINQ在DataTable上进行LIKE查询

  7. 7

    在Ubuntu virtualenv上进行pip安装枕头时出错

  8. 8

    在Xerox WorkCentre 6400上进行双面打印时出错

  9. 9

    执行mongodb嵌套查询时出错

  10. 10

    使用where函数在我的mysql查询上进行数学运算时出现语法错误

  11. 11

    使用WHERE子句对记录进行计数的查询

  12. 12

    使用雄辩的关系laravel进行计数查询

  13. 13

    使用内联查询语句进行计数

  14. 14

    在Oracle中对列(Count1)进行计数时出错

  15. 15

    如何使用node.js在MySQL上进行大量查询

  16. 16

    使用LUBM数据在Marklogic上进行SPARQL查询

  17. 17

    MongoDB:使用组对数组进行计数

  18. 18

    无法使用PHP在mongodb上进行身份验证

  19. 19

    在FireStore上进行简单查询

  20. 20

    在多行上进行AND的SQL查询

  21. 21

    使用2进行一次选择查询,查询在同一表上进行

  22. 22

    MS Access查询-使用最新查询进行计数

  23. 23

    使用Shiro时在Spring上进行注释,NullPointerException

  24. 24

    在布尔列上进行过滤时在熊猫中使用FutureWarning

  25. 25

    在CentOS 6上进行OTRS安装期间重新启动httpd时出错

  26. 26

    在其他页面上进行变量转换时出错

  27. 27

    PacketHandler:74-在mrniko / netty-socket.io上进行数据处理时出错?

  28. 28

    在查询中使用“ ORDER BY count”时出错

  29. 29

    使用Apache Jena查询DBPedia时出错

热门标签

归档