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