У меня есть домен, подобный этому в Grails
class User {
static mapWith = "mongo"
ObjectId id
String name
String address
Integer age
}
Я создаю интерфейс поиска в Grails для запроса базы данных MongoDb с помощью плагина MongoDb .Поиск может быть выполнен по любому из полей в базе данных, и любое поле, не заданное пользователем, не должно использоваться в запросе.Т.е. никакие поля не должны сравниваться с нулем.Например, если оставить все поля пустыми, возвращаются все пользователи, но поиск name
возвращает только те документы, которые соответствуют name
.
Изначально мои запросы были простыми, и я использовал User.find(new User(params));
в своем контроллере, который работал нормально.Теперь мне нужно иметь возможность также запрашивать целочисленные поля, используя интервалы, больше и меньше, чем.Я смотрел на withCriteria()
и строил запрос в зависимости от того, какие поля установил пользователь, но до сих пор мне не удавалось.
TL; DR Как я могу сделатьзапрос, где я не знаю, какие поля пользователь хочет включить в запрос?