- MongoDB CRUD Operations >
- Text Search
Text Search¶
On this page
MongoDB Atlas Search
Atlas Search makes it easy to build fast, relevance-based search capabilities on top of your MongoDB data. Try it today on MongoDB Atlas, our fully managed database as a service.
Overview¶
MongoDB supports query operations that perform a text search of string
content. To perform text search, MongoDB uses a
text index and the $text
operator.
Note
Views do not support text search.
Example¶
This example demonstrates how to build a text index and use it to find coffee shops, given only text fields.
Create a collection stores
with the following documents:
Text Index¶
MongoDB provides text indexes 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.
To perform text search queries, you must have a
text
index on your collection. A collection can only have one
text search index, but that index can cover multiple fields.
For example you can run the following in a mongo
shell to
allow text search over the name
and description
fields:
$text
Operator¶
Use the $text
query operator to perform text searches on a
collection with a text index.
$text
will tokenize the search string using whitespace and most
punctuation as delimiters, and perform a logical OR
of all such
tokens in the search string.
For example, you could use the following query to find all stores containing any terms from the list “coffee”, “shop”, and “java”:
Exact Phrase¶
You can also search for exact phrases by wrapping them in double-quotes.
If the $search
string includes a phrase and individual terms, text search
will only match documents that include the phrase.
For example, the following will find all documents containing “coffee shop”:
For more information, see Phrases.
Term Exclusion¶
To exclude a word, you can prepend a “-
” character. For example, to
find all stores containing “java” or “shop” but not “coffee”, use the
following:
Sorting¶
MongoDB will return its results in unsorted order by default. However, text search queries will compute a relevance score for each document that specifies how well a document matches the query.
To sort the results in order of relevance score, you must explicitly
project the $meta
textScore
field and sort on it:
Text search is also available in the aggregation pipeline.
Language Support¶
MongoDB supports text search for various languages. See Text Search Languages for a list of supported languages.