Вы, кажется, путаете запросы регулярного выражения с полнотекстовым поиском.
Чтобы выполнить запрос регулярного выражения, передайте регулярное выражение:
irb(main):002:0> Band.create!(name: 'hello')
=> #<Band _id: 5e4b39e5026d7c7b6fcfc1ad, name: "hello", description: nil>
irb(main):003:0> Band.collection.find(name: /el/).first
=> {"_id"=>BSON::ObjectId('5e4b39e5026d7c7b6fcfc1ad'), "name"=>"hello"}
irb(main):004:0> Band.collection.find(name: /EL/).first
=> nil
irb(main):006:0> Band.collection.find(name: /EL/i).first
=> {"_id"=>BSON::ObjectId('5e4b39e5026d7c7b6fcfc1ad'), "name"=>"hello"}
Это не использует $text
оператор.
Чтобы выполнить полнотекстовый поиск, см. https://docs.mongodb.com/mongoid/master/tutorials/mongoid-queries/#full -text-search . При этом не используются регулярные выражения.
Необходимо понимать разницу между полнотекстовым поиском и запросами регулярных выражений. У каждого есть свое применение. Разработчики, как правило, лучше знакомы с регулярными выражениями, чем с полнотекстовым поиском, поэтому, возможно, вам было бы полезно узнать, как работает полнотекстовый поиск. Полнотекстовый поиск не работает для произвольных фрагментов слов, потому что он работает на основе лексем. Регулярные выражения не сводятся к лексемам слов и, следовательно, являются плохим выбором для многих запросов на естественном языке.
Если вы хотите выполнять запросы с регулярными выражениями, вы можете сделать это для нескольких полей, комбинируя несколько критериев (по одному на поле ) с $ или. Если вы хотите полнотекстовый поиск, регулярные выражения не применимы, определите индекс полнотекстового поиска, содержащий все поля, которые вы будете sh искать и использовать оператор $ text.