如何从mongo

时间:2015-05-11 10:10:46

标签: mongodb scala casbah scala-2.11

我在mongoDB中存储一个可变的Set,现在我想从mongo中检索那个集合,但是我无法做到这一点,也许我正在以错误的方式进行 这是我的代码

class A{
var genreIdSet = scala.collection.mutable.Set[Int]()

def addToGenreIdSet(genreId : Int)  = {
    genreIdSet += genreId

  }

  def getGenreIdSet : scala.collection.mutable.Set[Int]= {
    genreIdSet
  }
}

用于存储在mongo中

val result:WriteResult= collection.insert(new BasicDBObject("_id",artistImpl.getUuid)
                        .append("GetGenreIdSet",artistImpl.getGenreIdSet)
                                            ,WriteConcern.Acknowledged)

我正在检索这样的

val cursor=collection.find()
    var obj=new BasicDBObject
 try {
     while(cursor.hasNext)
     {
       obj=cursor.next().asInstanceOf[BasicDBObject]
       id=obj.getString("_id").toInt
       log.info("id value is "+id)
              var a =obj.get("GetGenreIdSet").asInstanceOf[scala.collection.mutable.Set[Int]]
       log.info("Set is "+a) 

但它会抛出错误

-com.mongodb.BasicDBList cannot be cast to scala.collection.mutable.Set
java.lang.ClassCastException: com.mongodb.BasicDBList cannot be cast to scala.collection.mutable.Set

如何解决此问题,请帮助我

1 个答案:

答案 0 :(得分:1)

BasicDBListSet没有隐式转换器。

BasicDBList相当的是ListMongoDBObjects有助手可以让您获得一个类型的密钥,例如:

obj.getAs[List[Integer]]("GetGenreIdSet")

getAs遵循Scala惯例并在此处返回Option,它将返回Option[List[Integer]]