指定されたキーが見つかりません。リストを抽出
obj.getAs[String]("title") match {
case Some(someStr) => ...
case None => ...
}
少し複雑です:あなたはあなたのOption[A]
を与えるgetAs
を使用することができ
val myListOfInts =
(List() ++ obj("nums").asInstanceOf[BasicDBList]) map { _.asInstanceOf[Int] }
私はカスバよりconsiceを使用して作るヘルパーを、書いて、それが参考になるかもしれ私はそれを添付:
package utils
import com.mongodb.casbah.Imports._
class DBObjectHelper(underlying: DBObject) {
def asString(key: String) = underlying.as[String](key)
def asDouble(key: String) = underlying.as[Double](key)
def asInt(key: String) = underlying.as[Int](key)
def asList[A](key: String) =
(List() ++ underlying(key).asInstanceOf[BasicDBList]) map { _.asInstanceOf[A] }
def asDoubleList(key: String) = asList[Double](key)
}
object DBObjectHelper {
implicit def toDBObjectHelper(obj: DBObject) = new DBObjectHelper(obj)
}
あなたはこのようにヘルパーを使用することができます。
val someStr = obj asString "title"
val someInt = obj asInt "count"
val myDoubleList = obj asDoubleList "coords"
私はそれがあなたを助けてくれることを願っています。
非常にうまくトピックをカバーするうわー!ありがとう、これは明らかに今最良の答えとして選択されています。 – noncom
'val obj = coll.findOne(query);を呼び出すとき、' getAsはOption [coll.T]のメンバではありません。 val str = obj.getAs [String]( "myValue") '。 –
この例は機能しませんが、 'findOne'は' Option'型を返します。 – andyczerwonka