2014-01-30 7 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()을 시도하십시오. 모든 숫자 형식으로 작동해야합니다.

그리고 당신은 당신이 너무 Option을 반환 할 수 있도록 findOne 반환 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

'import com.mongodb.casbah.Imports._' 했습니까? –

+0

예. 여기에 은 내가 casbah와 관련된 다른 수입 한 수입 명세서입니다. import com.mongodb.casbah.MongoClient 및 import com.mongodb.casbah.Imports._ – ddarz4u