Я занимаюсь разработкой веб-приложения с использованием Codeigniter и MongoDB.Мне нужно создать функцию для поиска в базе данных по следующим критериям:
- Теги
- Имя пользователя владельца
- Статус
- Диапазон дат
Он должен быть достаточно гибким, чтобы пользователи могли, например, выполнять поиск только по тегам или статусу и не указывать другие критерии.
Сейчас я использую структуру if else с различными запросами, которыеотражать выбранные критерии.Например код ниже.Это очень плохой способ, потому что тогда мне нужно создать запрос, соответствующий каждой возможной комбинации.
if ($args['status']) {
$this->mongo_db->select ($select)->
where('user_name', $args['username']) ->
where ('status', $args['status']) ->
where_in_all ('file_tags', $tags) ->
limit ($limit) ->
offset ($offset) ->
get ('files');
} else {
$this->mongo_db->select ($select)->
where('user_name', $args['username']) ->
where_in_all ('file_tags', $tags) ->
limit ($limit) ->
offset ($offset) ->
get ('files');
}
Нет ли лучшего способа сделать поиск в MongoDB?