如何从Mongodb,casbah获取数字

时间:2014-01-30 11:25:06

标签: mongodb scala casbah

我有一个从MongoDB获取端口号的简单代码。我使用scala,驱动程序当然是casbah。

  def getPortNo : Int {
    val query = MongoDBObject("_id" -> "Store")
    val data  = coll.findOne(query)
    return data.get("port")
  }

这里我的应用程序只有一个id等于“store”的文档。

但这在IDE中无法解决。

我有相同的代码来获取版本。

  def getVersion : String = {
    val query = MongoDBObject("_id" -> "Store")
    val data  = coll.findOne(query)
    return data.get("version").toString
  }

这很有效。

我尝试了data.get("port").toString.toInt,它也无效。

有人可以告诉我该怎么做。我认为这里的问题是返回值不是数字或字符串。什么是返回类型以及如何将其转换为数字。

1 个答案:

答案 0 :(得分:1)

这取决于您如何存储“端口”字段。试试data.as[Number]("value").intValue()。它必须以任何数字格式工作。

您应该考虑findOne返回Option,因此您也可以返回Option

  def getPortNo : Option[Int] = {
    val query = MongoDBObject("_id" -> "Store")
    val data  = coll.findOne(query)
    data.map(_.as[Number]("port").intValue)
  }

或者使用一些默认值:

  def getPortNo : Int = {
    val query = MongoDBObject("_id" -> "Store")
    val data  = coll.findOne(query)
    data.map(_.as[Number]("port").intValue).getOrElse(80)
  }