2014-01-30 15 views
1

我有一個簡單的代碼來從MongoDB獲取端口號。我使用scala,司機當然是casbah。如何從Mongodb,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,它也行不通。

有人可以告訴我如何做到這一點。我認爲這裏的問題是沒有數字或字符串的返回值。什麼是返回類型,以及如何將其轉換爲數字。

+0

你得到什麼錯誤? – Saket

回答

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) 
    } 
+0

「as」在IDE中未得到解決。 – ddarz4u

+1

你有沒有進口com.mongodb.casbah.Imports._'? –

+0

是的。 這裏是我輸入其他與casbah相關的進口報表。 import com.mongodb.casbah.MongoClient and import com.mongodb.casbah.Imports._ – ddarz4u