MongoDB offers a premium full-text search solution, MongoDB Atlas Search, for data hosted on MongoDB Atlas. A legacy text search capability is available for users self-managing MongoDB deployments.
Query Framework
Use the $text query operator to perform text searches on a
collection with a text index.
$text tokenizes 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" in
the stores collection:
db.stores.find( { $text: { $search: "java coffee shop" } } )
Use the $meta query operator to obtain and sort by the
relevance score of each matching document. For example, to order a
list of coffee shops in order of relevance, run the following:
db.stores.find( { $text: { $search: "coffee shop cake" } }, { score: { $meta: "textScore" } } ).sort( { score: { $meta: "textScore" } } )
For more information on the $text and $meta
operators, including restrictions and behavior, see:
$metaprojection operator
Aggregation Pipeline
When working with aggregation pipelines, use
$match with a $text expression to execute a text
search query. To sort the results in order of relevance score, use the
$meta aggregation operator in the $sort
stage [1].
For more information and examples of $text in
Aggregation Operations pipelines, see
$text in the Aggregation Pipeline on Self-Managed Deployments.
For data hosted on MongoDB Atlas, Atlas Search provides the $search aggregation stage to perform full-text search on your collections.
| [1] | The behavior and requirements of the $meta projection
operator differ from that of the $meta aggregation
operator. For details on the $meta aggregation operator,
see the $meta aggregation operator reference page. |