2012-01-13 4 views
2

名前の一部を含むフィールドを照会するために、CasbahとSalatでクエリを書き込もうとします。Casbah/Salat:文字列の一部が含まれているフィールドを照会する方法は?

val regexp = (""".*"""+serverName+""".*""").r 
val query = "serverName" -> regexp 
val result = find(MongoDBObject(query)) 

val regexp = ".*"+serverName+".*" 

でレコードがMongoDBの中で、私は完全な名前で検索するとき、それは動作します: は、私は(SalatDAO内)は、このような正規表現を使用しようとしました。

文字列の一部を検索するようにcasbahに指示する正しい方法はありますか?

私が修正したいもう一つのことは、パラメータの文字列の連結です。 casbahで入力パラメータをエスケープするデフォルトの方法はないので、パラメータは がjavascriptコマンドとして解釈されませんか?サーバー名を見つけることができるのMongoDBシェルで

よろしく、 オリバー

+0

あなたのデータを私たちに教えてください。 –

+0

ここに私が照会する私のデータの一部です: case class Machine(_id:ObjectId = new ObjectId、 serverName:オプション[文字列]、 – Odo

+0

OK。 > regexp.r ' – Odo

答えて

1

iはカスバの経験を持っていけない

db.collection.find({serverName:/whatever/i}) 

ことで特定の文字列が含まれている、私はそれがこのようでなければならないと考えています。テストしてください

val regexp = ("""/"""+serverName+"""/i""").r 
find(MongoDBObject("serverName" -> regexp)) 
+1

から/ plを提供する必要はありません。 "+ serverName +"。* "'と '' val result = find(MongoDBObject( "serverName" - > regexp.r)) ' – Odo

関連する問題