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

Était-ce utile?

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))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top