我在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
如何解决此问题,请帮助我
答案 0 :(得分:1)
从BasicDBList
到Set
没有隐式转换器。
与BasicDBList
相当的是List
,MongoDBObjects
有助手可以让您获得一个类型的密钥,例如:
obj.getAs[List[Integer]]("GetGenreIdSet")
getAs
遵循Scala惯例并在此处返回Option
,它将返回Option[List[Integer]]