정규식이있는 문자열 배열 인 필드에 대해 Casbah를 통해 MongoDB를 쿼리하려고합니다. 예를 들어정규 표현식 일치에 대해 [String]을 (를) 쿼리하는 방법은 무엇입니까?
는 :
나는 필드 IPS의 문자열로 저장되어있는 IP 목록,와 MASCHINE 있습니다. 이제 서브넷 192.168이있는 모든 시스템을 검색하려고합니다.
나에게는 내가 모든 항목에 적용된 정규 표현식을 사용하여 배열을 쿼리 할 수없는 것처럼 보이며 항목 중 하나가 일치하면 컴퓨터가 반환됩니다.
그런 쿼리를 만드는 방법은 없습니까?
- 고정
당신의 도움에 감사드립니다.
모든 것이 이제 작동합니다. 결국 나는 Casbah의 한 가지 한계를 해결해야한다. 왜냐하면 $ 또는 and로 쿼리에 참여해야했기 때문에 Casbah는 정규 표현식에 대한 implicits가 누락되었다고 불평한다. 추가로 다른 필드와 정규식 배열 쿼리에 대한
내 마지막 코드는 다음과 같습니다
val regexp = ".*" + parameter + ".*"
val nameQ = MongoDBObject("serverName" -> regexp.r)
val ipsQ = MongoDBObject("ips" -> regexp.r)
val bldr = MongoDBList.newBuilder
bldr += ipsQ
bldr += nameQ
val query = MongoDBObject("$or" -> bldr.result.asDBObject)
val result = find(query)
좋은 코드와 매개 변수의 문자열 연결 고정 할 필요가 없습니다. 하지만 작동합니다.
이미 사용해 보았습니다. $ elemMatch는 배열에 키/값 쌍이 있다고 가정합니다. 하지만 나는 단순한 문자열 만 갖고있다. – Odo