123456789_123456789_123456789_123456789_123456789_

Text Search

MongoDB provides text indexes </core/index-text/> to support text search queries on string content. Text indexes can include any field whose value is a string or an array of string elements.

Note

MongoDB Atlas also provides Atlas Search which is a more powerful and flexible text search solution. The rest of this page discusses text indexes and not Atlas Search.

To perform a text search with the Ruby driver, first create a text index with indexes.create_one(). The following command creates a text index on the name field of the restaurants collection in the test database.

client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'test')
client['restaurants'].indexes.create_one( { :name => 'text' } )

Once the text index is created you can use it as part of a query. The following code finds all documents in the restaurants collection which contain the word garden, without case sensitivity.

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