2012-01-13 3 views
2

나는 이름의 일부를 포함하는 필드를 쿼리하기 위해 Casbah와 Salat를 사용하여 쿼리를 작성하려고합니다. I의 (a SalatDAO 내부)과 같은 정규 표현식을 사용하려고 :Casbah/Salat : 문자열의 일부가 들어있는 필드를 쿼리하는 방법?

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

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

기록은 MongoDB를이고 내가 완전한 이름으로 검색 할 때 작동

과 함께합니다.

문자열의 일부를 검색하도록 casbah에 알리는 올바른 방법은 무엇입니까?

수정하고 싶은 또 다른 사항은 매개 변수의 문자열 연결입니다. casbah를 사용하여 입력 매개 변수를 이스케이프하는 기본 방법이 없으므로 매개 변수가 이 아닌 javascript 명령으로 해석됩니까? 서버 이름을 찾을 수 있습니다 MongoDB의 쉘에서

최고 감사합니다, 올리버

+0

귀하의 데이터를 보여주십시오. –

+0

다음은 내가 쿼리 한 데이터 중 일부입니다 : case class Machine (_id : ObjectId = new ObjectId, serverName : Option [String], – Odo

+0

괜찮 았는데 수정 된 것 같음 'val query = "serverName"- > regexp.r ' – Odo

답변

1

내가 카스바 어떤 경험을 가지고 있겠지

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

하여 특정 문자열을 포함, 내가 그것을 다음과 같이해야합니다 생각합니다. 테스트 해주세요

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

에서 사용할 수 있습니다./es를 제공 할 필요는 없습니다. 나를 위해 그것은 "serverName +". * "'와'val result = find (MongoDBObject ("serverName "-> regexp.r))' – Odo