По сути, поиск по регулярному выражению, как упомянуто Lucas T, является лучшим способом построения гибкого поиска, но я бы не рекомендовал использовать поиск по регулярному выражению игнорирования регистра ('$ options': 'i').При использовании игнорирования регистра mongodb не может использовать индексы и должен проверять каждый отдельный документ, что приводит к низкой производительности.
Мой подход заключается в добавлении нового поля в документ, в котором вы сохраняете нормализованные ключевые слова поиска для каждого документа.Я обычно нормализую ключевые слова, уменьшая регистр и выделяя символы, которые трудно обработать в регулярных выражениях - последнее зависит от ваших данных и потребностей запросов.Сравнение регулярного выражения с началом также более эффективно использует индекс.
См. В конце страницы: http://docs.mongodb.org/manual/reference/operator/regex/