MongoDB ofrece índices de texto para consultas de búsqueda en contenido de strings. Los índices de texto pueden incluir cualquier campo cuyo valor sea un string o un arreglo de elementos de string.
Nota
MongoDB Atlas también proporciona MongoDB Search, que es una solución de búsqueda de texto más potente y flexible. El resto de esta página trata sobre índices de texto y no sobre MongoDB Search.
Para realizar una búsqueda de texto con el controlador Ruby, primero crea un índice de texto con indexes.create_one(). El siguiente comando crea un índice de texto en el campo name de la colección restaurants en la base de datos test.
client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'test') client['restaurants'].indexes.create_one( { :name => 'text' } )
Una vez creado el índice de texto, puedes usarlo como parte de una query. El siguiente código encuentra todos los documentos en la colección restaurants que contienen la palabra garden, sin distinción entre mayúsculas y minúsculas.
client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'test') client[:restaurants].find( { '$text' => { '$search' => 'garden', '$caseSensitive' => false } } ).each do |document| #=> Yields a BSON::Document. end