Casbah / Salat: Comment interroger un champ qu'une partie d'une chaîne est contenue?
Question
J'essaie d'écrire une requête avec Casbah et Salat pour interroger un champ qu'il comprend des parties d'un nom. J'ai essayé d'utiliser une expression régulière comme celle-ci (à l'intérieur d'un salatdao):
val regexp = (""".*"""+serverName+""".*""").r
val query = "serverName" -> regexp
val result = find(MongoDBObject(query))
et avec
val regexp = ".*"+serverName+".*"
L'enregistrement est dans MongoDB et lorsque je le recherche avec le nom complet, cela fonctionne.
Comment est la bonne façon de dire à Casbah de rechercher une partie de la chaîne?
Une autre chose que je voudrais corriger est la concaténation des cordes du paramètre. Existe-t-il un moyen par défaut d'échapper aux paramètres d'entrée avec Casbah, donc le paramètre n'est pas interprété comme une commande javascript?
Meilleures salutations, Oliver
La solution
Dans MongoDB Shell, vous pouvez trouver les noms de serveur contient la chaîne spécifique par
db.collection.find({serverName:/whatever/i})
Je n'ai aucune expérience avec Casbah, je crois que ça doit être comme ça. Veuillez tester
val regexp = ("""/"""+serverName+"""/i""").r
find(MongoDBObject("serverName" -> regexp))