Я пытаюсь выполнить поиск в mongoDB с помощью пользовательского ввода. Варианты для пользователя будут «И» и «ИЛИ».
Функциональность "и" не работает так, как мне нужно.
Прямо сейчас, если пользователь ищет "foo AND bar", я разбиваю его на массив ["foo", "bar"]
. Затем я хочу выполнить поиск по всем полям в моей базе данных для любого документа, в котором есть «foo» и «bar».
Это мой запрос, @q
— массив поиска:
@item = Item.and( {:food.in => @q}), {:clothes.in => @q}, {:movies.in => @q} )
Прямо сейчас это ищет "foo" И "bar", чтобы ОБА были в одном и том же поле еда, одежда и фильмы, а не только оба в одном документе. Таким образом, он возвращает 0, даже если «foo» находится в еде, а «bar» — в фильмах.
Как мне правильно вложить условие .any_of()
или любое другое условие в .and()
, чтобы оно искало оба слова во всем документе, а не в каждом отдельном поле?
Заранее спасибо за любую помощь, я уже давно этим занимаюсь..
ИЗМЕНИТЬ
Для большей ясности я хотел бы искать во ВЕСЬ документе mongoDB несколько слов, а не каждое поле в документе... что и делает приведенный выше запрос. Кто-нибудь знает как это сделать??