8
我试图写一个查询通过对象ID与Casbah查找,它似乎微不足道,但...我没有找到。如何使用Casbah查找MongoDB上的对象ID?
我尝试这样做:
def get(id: Option[String]): User = {
val mongoDB : MongoDB = MongoConnection().apply("test")
val mongoColl : MongoCollection = mongoDB.apply("users")
val objectId = id.getOrElse().asInstanceOf[String]
val o : DBObject = MongoDBObject("_id" -> objectId)
val u = mongoColl.findOne(o)
val user = new User()
for(x <- u){
user.id = x.getAs[String]("_id")
user.username = x.getAs[String]("username")
user.password = x.getAs[String]("password")
}
user
}
这:
def get(id: Option[String]): User = {
val mongoDB : MongoDB = MongoConnection().apply("test")
val mongoColl : MongoCollection = mongoDB.apply("users")
val objectId = "ObjectId(\"" +id.getOrElse().asInstanceOf[String] + "\")"
val o : DBObject = MongoDBObject("_id" -> objectId)
val u = mongoColl.findOne(o)
val user = new User()
for(x <- u){
user.id = x.getAs[String]("_id")
user.username = x.getAs[String]("username")
user.password = x.getAs[String]("password")
}
user
}
这编译和运行,但没有结果。 我也试过这样:
def get(id: Option[String]): User = {
val mongoDB : MongoDB = MongoConnection().apply("test")
val mongoColl : MongoCollection = mongoDB.apply("users")
val objectId : ObjectId = id.getOrElse().asInstanceOf[ObjectId]
val o : DBObject = MongoDBObject("_id" -> objectId)
val u = mongoColl.findOne(o)
val user = new User()
for(x <- u){
user.id = x.getAs[String]("_id")
user.username = x.getAs[String]("username")
user.password = x.getAs[String]("password")
}
user
}
但是这一个不编译,因为字符串不能转换到的ObjectId。
java.lang.ClassCastException: java.lang.String cannot be cast to org.bson.types.ObjectId
谢谢您的帮助:)
好的,谢谢@McAdams。现在它工作了! 'DEF得到(ID:选项[字符串]):用户= { VAL MongoDB的:的MongoDB = MongoConnection()应用( “测试”) VAL mongoColl:MongoCollection = mongoDB.apply( “用户”) VAL的ObjectID :ObjectId = new ObjectId(id.getOrElse()。asInstanceOf [String]) val user = new User() val o:DBObject = MongoDBObject(“_ id” - > objectId) val u = mongoColl.findOne(o) (x <-u){user.id = x.getAs [String](“_ id”) user.fullname = x.getAs [String](“fullname”) user.username = x.getAs [字符串](“用户名”) } 用户 }' – Remy 2011-04-08 01:00:32
您也可以做mongoColl.findOne(id.get) – David 2011-04-15 05:39:36