Views do not support text search.
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:
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
$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”:
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.
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:
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
textScore field and sort on it:
Text search is also available in the aggregation pipeline.
MongoDB supports text search for various languages. See Text Search Languages for a list of supported languages.