docs/reference/text-search.txt
***********
Text Search
***********
.. default-domain:: mongodb
.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:class: singlecol
MongoDB provides :manual:`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 <https://docs.atlas.mongodb.com/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.
.. code-block:: ruby
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.
.. code-block:: ruby
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