Grails MongoDB FindAll не работает со специальными символами

Я пытался добавить функцию поиска в свой проект Grails.

Вот мой класс домена

class Resource {
    String mimeType
    String resourceUrl
    String website
    static constraints = {
    }
}

а вот мой контроллер

class ResourceController {
def report()
    {
    def website = params.website
    println "inside report " + website
    def res = Resource.findAllByWebsite(website)
    int noOfResources = res.size()
    println noOfResources
    }

Этот код работает для значений веб-сайта без каких-либо специальных символов, таких как www.google.com, но по какой-то причине всякий раз, когда в значении веб-сайта есть специальные символы, такие как ? или что-то еще, он ничего не извлекает из базы данных. Пожалуйста, предложите мне альтернативный подход.

Я тоже пробовал это: def res = Resource.findAllByWebsiteLike(website) но это тоже не сработало.


person clever_bassi    schedule 09.07.2014    source источник
comment
Вы пытались экранировать специальные символы (например, используя «\?» вместо «?» и т. д.)?   -  person Anand Jayabalan    schedule 09.07.2014
comment
Я сделал. Но значение веб-сайта, хранящегося в базе данных, не содержит escape-символов. Это не сработало. Я ищу альтернативный подход для findAll, который позволяет использовать специальные символы.   -  person clever_bassi    schedule 09.07.2014


Ответы (1)


Вы пытались использовать поиск по регулярным выражениям?

Такие как :

def searchMap
searchMap.put(fieldSearch, [ '$regex' : website, '$options': 'i'] )
def res = Resource.collection.find(searchMap)
person thereisonlyoneP    schedule 20.01.2016