MongoDB proporciona Índices de texto para facilitar la búsqueda de texto en cadenas. Los índices de texto pueden incluir cualquier campo cuyo valor sea una cadena o una matriz de elementos de cadena.
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 de Ruby, primero debes crear 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