Estoy tratando de escribir una consulta para buscar por Object ID con Casbah, parece trivial pero ... no lo encuentro.CÓMO buscar por ID de objeto en MongoDB con Casbah?
yo probamos este:
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
}
y esto:
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
}
Este compilar y ejecutar, pero sin resultado. También probé esto:
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
}
Pero éste no se compila porque la cadena no se puede convertir a OBJECTID.
java.lang.ClassCastException: java.lang.String cannot be cast to org.bson.types.ObjectId
Gracias por su ayuda :)
Ok gracias @McAdams. ¡Ahora funciona! 'def get (id: Opción [String]): Usuario = { val MongoDB:. MongoDB = MongoConnection() se aplican ("test") val mongoColl: MongoCollection = mongoDB.apply ("usuarios") val objectId : ObjectId = new ObjectId (id.getOrElse(). AsInstanceOf [String]) val user = new User() val o: DBObject = MongoDBObject ("_ id" -> objectId) val u = mongoColl.findOne (o) para (x <- u) { user.id = x.getAs [String] ("_ id") user.fullname = x.getAs [String] ("nombre completo") user.username = x.getAs [ Cadena] ("nombre de usuario") } usuario } ' – Remy
También puede hacer mongoColl.findOne (id.get) – David