8
나는 Casbah와 Object ID로 찾기 위해 쿼리를 작성하려고하는데, 사소한 것 같지만 ... 찾지 못합니다.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. 이제 작동합니다! . 사용자 = { 발 MongoDB를 : 는'데프 (: 옵션 [문자열] ID)를 얻을 MongoDB를 = MongoConnection()을 적용 ("테스트") 발 mongoColl : MongoCollection = mongoDB.apply ("사용자") 발 OBJECTID : ObjectId = new ObjectId (id.getOrElse(). asInstanceOf [문자열]) val user = new User() val o : DBObject = MongoDBObject ("_ id"-> objectId) val u = mongoColl.findOne (o) for (x <- u) { user.id = x.getAs [문자열] ("_ id") user.fullname = x.getAs [문자열] ("전체 이름") user.username = x.getAs [ 문자열] ("사용자 이름") } 사용자 } ' – Remy
mongoColl.findOne (id.get)을 수행하십시오. – David