Casbah/Salat: ¿Cómo consultar un campo que se contiene una parte de una cadena?
Pregunta
Intento escribir una consulta con Casbah y Salat para consultar un campo que incluya partes de un nombre. Traté de usar una expresión regular como esta (dentro de un salatdao):
val regexp = (""".*"""+serverName+""".*""").r
val query = "serverName" -> regexp
val result = find(MongoDBObject(query))
y con
val regexp = ".*"+serverName+".*"
El registro está en MongoDB y cuando lo busco con el nombre completo, funciona.
¿Cómo es la forma correcta de decirle a Casbah que busque una parte de la cadena?
Otra cosa que me gustaría arreglar es la concatenación de cadenas para el parámetro. ¿Hay alguna forma predeterminada de escapar de los parámetros de entrada con Casbah, por lo que el parámetro no se interpreta como un comando JavaScript?
Saludos cordiales, Oliver
Solución
En MongoDB Shell puede encontrar que los nombres del servidor contienen la cadena específica por
db.collection.find({serverName:/whatever/i})
No tengo ninguna experiencia con Casbah, creo que debe ser así. Prueba
val regexp = ("""/"""+serverName+"""/i""").r
find(MongoDBObject("serverName" -> regexp))