я пытаюсь запросить MongoDB через Casbah для поля, которое представляет собой массив строк с регулярным выражением.
Например:
У меня есть Maschine со списком ips, которые хранятся в виде строки в полях ips. Теперь я хочу найти все машины с подсетью 192.168.0.
Для меня мне кажется, что я не могу запросить массив с регулярным выражением, примененным к каждой записи, и если одна из записей соответствует машине, возвращается.
Любой способ сделать такой запрос?
-- Фиксированный
Спасибо за вашу помощь.
Теперь все работает. В конце мне нужно обойти одно ограничение Casbah, потому что мне нужно было присоединиться к запросам с помощью $or, а Casbah жалуется на отсутствие имплицитов в регулярном выражении.
Мой окончательный код для запроса массива RegExp с дополнительным другим полем:
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)
Это не самый красивый код, и необходимо исправить конкатенацию строк параметра. Но это работает :)