Я использую MongoDB и Mongoid ODM для MongoDB в Rails. У меня есть поле с именем name, и одним из значений имени документа является «John Paul Smith». Так, например:
{"_id": ObjectId ("582bab8f9f26631b8a000088"), "name": "ДЖОН ПОЛ
СМИТ "," электронная почта ":" "," факс ":" ", ...
Я хочу найти этот документ с ключевым словом "Джон Смит". Теперь, если я ищу с "ДЖОН ПОЛ СМИТ", это работает:
Contact.where(name: " John Paul Smith").first
# => #<Contact _id: 582fab8d9f26631605000054, created_at: 2016-11-19 01:31:57 UTC, ...
Но если я буду искать по имени и фамилии, это не даст результатов:
Contact.where(name: "John Smith").first
# => nil
Он должен выдавать результат, даже если я ищу по имени и только по части фамилии, например:
Contact.where(name: "John Smith").first
В настоящее время я использую следующий поиск:
Contact.where({name: /.*#{condition}.*/i })
И он не делает то, что я хочу, как я описал выше. Как я могу найти поле по имени и фамилии или имени и части фамилии или части имени или имени и отчества? (Я принимаю решение либо в MongoDB, либо в Mongoid. Мне не обязательно нужно решение Mongoid. Я могу преобразовать решение MongoDB в Mongoid.)