Bird
Raised Fist0
MongoDBquery~20 mins

Text search with text indexes in MongoDB - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Text Search Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Find documents matching a text search
Given a MongoDB collection articles with a text index on the content field, what will be the output of this query?
MongoDB
db.articles.find({ $text: { $search: "mongodb tutorial" } })
AReturns all documents containing both words 'mongodb' and 'tutorial' anywhere in the content field.
BReturns documents containing the exact phrase 'mongodb tutorial' only.
CReturns documents only if the content field starts with 'mongodb tutorial'.
DReturns documents containing either 'mongodb' or 'tutorial' but not both.
Attempts:
2 left
💡 Hint
Think about how MongoDB text search matches words, not exact phrases by default.
📝 Syntax
intermediate
2:00remaining
Identify the correct syntax to create a text index
Which of the following commands correctly creates a text index on the title and description fields of a MongoDB collection named products?
Adb.products.createIndex({ title: "text", description: "text" })
Bdb.products.createIndex({ title: text, description: text })
Cdb.products.createIndex({ title: 'text', description: 'text' })
Ddb.products.createIndex({ title: text(), description: text() })
Attempts:
2 left
💡 Hint
Remember that the index type is specified as a string.
❓ optimization
advanced
2:00remaining
Optimize text search for multiple languages
You want to create a text index on the comments field of a collection reviews that supports English and Spanish languages for better search relevance. Which command achieves this?
Adb.reviews.createIndex({ comments: "text" }, { default_language: "spanish" })
Bdb.reviews.createIndex({ comments: "text" }, { weights: { comments: 1 }, default_language: "spanish" })
Cdb.reviews.createIndex({ comments: "text" }, { language_override: "spanish" })
Ddb.reviews.createIndex({ comments: "text" }, { default_language: "english" })
Attempts:
2 left
💡 Hint
MongoDB text indexes support one default language per index for stemming and stop words.
🔧 Debug
advanced
2:00remaining
Why does this text search query return no results?
You created a text index on the summary field of the books collection. You run this query but get no results: db.books.find({ $text: { $search: "adventure" } }). What is the most likely reason?
AThe <code>$search</code> operator requires exact phrase matching with quotes.
BThe text index was created on a different field, not on <code>summary</code>.
CThe collection has no documents with the word 'adventure' in the <code>summary</code> field.
DText search queries require specifying the language in the query.
Attempts:
2 left
💡 Hint
Check which fields have the text index.
🧠 Conceptual
expert
2:00remaining
Understanding text score sorting in MongoDB
You run this query on a collection posts with a text index on content:
db.posts.find({ $text: { $search: "database" } }, { score: { $meta: "textScore" } }).sort({ score: { $meta: "textScore" } })
What does the score field represent in the output documents?
AThe timestamp when the document was last updated.
BThe number of times the word 'database' appears in the content field.
CA numeric value representing how well the document matches the search terms; higher means better match.
DThe length of the content field in characters.
Attempts:
2 left
💡 Hint
Text score is a relevance measure computed by MongoDB.

Practice

(1/5)
1. What is the main purpose of creating a text index in MongoDB?
easy
A. To store large text files efficiently
B. To speed up searching for words in text fields
C. To encrypt text fields for security
D. To sort documents by text fields alphabetically

Solution

  1. Step 1: Understand what a text index does

    A text index allows MongoDB to quickly search for words inside text fields instead of scanning all documents.
  2. Step 2: Compare options with the purpose

    Only To speed up searching for words in text fields matches the purpose of speeding up word searches. Other options describe unrelated features.
  3. Final Answer:

    To speed up searching for words in text fields -> Option B
  4. Quick Check:

    Text index purpose = speed up word search [OK]
Hint: Text indexes help find words fast in text fields [OK]
Common Mistakes:
  • Confusing text index with sorting index
  • Thinking text index encrypts data
  • Assuming text index stores files
2. Which of the following is the correct syntax to create a text index on the field description in MongoDB?
easy
A. db.collection.createIndex({ description: 1 })
B. db.collection.createIndex({ description: 'string' })
C. db.collection.createTextIndex({ description: 1 })
D. db.collection.createIndex({ description: 'text' })

Solution

  1. Step 1: Recall the syntax for text index creation

    The correct syntax uses createIndex with the field set to the string 'text'.
  2. Step 2: Check each option

    db.collection.createIndex({ description: 'text' }) matches the correct syntax. db.collection.createIndex({ description: 'string' }) uses 'string' which is invalid. db.collection.createTextIndex({ description: 1 }) uses a non-existent method. db.collection.createIndex({ description: 1 }) creates a normal ascending index, not text.
  3. Final Answer:

    db.collection.createIndex({ description: 'text' }) -> Option D
  4. Quick Check:

    Text index syntax = createIndex({field: 'text'}) [OK]
Hint: Use createIndex with 'text' to make text indexes [OK]
Common Mistakes:
  • Using 'string' instead of 'text'
  • Using createTextIndex method (doesn't exist)
  • Creating normal indexes instead of text indexes
3. Given a collection with a text index on the field content, what will the following query return?

db.articles.find({ $text: { $search: "mongodb tutorial" } })
medium
A. Documents containing either 'mongodb' or 'tutorial' in the content field
B. Documents containing both words 'mongodb' and 'tutorial' in the content field
C. Documents containing the exact phrase 'mongodb tutorial' only
D. Documents sorted alphabetically by content

Solution

  1. Step 1: Understand $text and $search behavior

    The $search operator looks for documents containing any of the words listed, not necessarily all or exact phrases.
  2. Step 2: Analyze the options

    Documents containing either 'mongodb' or 'tutorial' in the content field correctly states it returns documents containing either word. Documents containing both words 'mongodb' and 'tutorial' in the content field requires both words, which is not default. Documents containing the exact phrase 'mongodb tutorial' only requires exact phrase, which needs quotes. Documents sorted alphabetically by content is unrelated.
  3. Final Answer:

    Documents containing either 'mongodb' or 'tutorial' in the content field -> Option A
  4. Quick Check:

    $search finds any listed words by default [OK]
Hint: By default, $search matches any listed words [OK]
Common Mistakes:
  • Assuming $search matches all words by default
  • Thinking $search matches exact phrases without quotes
  • Confusing search results with sorting
4. You run this query but get an error:

db.posts.find({ $text: { $search: "database" } })

What is the most likely cause?
medium
A. The query syntax requires parentheses
B. The $search operator is misspelled
C. No text index exists on the collection
D. The field name 'database' is invalid

Solution

  1. Step 1: Understand requirements for $text queries

    MongoDB requires a text index on at least one field to use $text queries without error.
  2. Step 2: Check the options for likely causes

    No text index exists on the collection correctly identifies missing text index as the cause. Other options describe syntax or spelling errors which are not present.
  3. Final Answer:

    No text index exists on the collection -> Option C
  4. Quick Check:

    $text query needs text index [OK]
Hint: Ensure text index exists before using $text queries [OK]
Common Mistakes:
  • Ignoring the need for a text index
  • Thinking $search syntax is wrong
  • Assuming field names cause $text errors
5. You want to find documents that contain the exact phrase "fast search" in the summary field which has a text index. Which query will correctly do this?
hard
A. db.collection.find({ $text: { $search: '"fast search"' } })
B. db.collection.find({ $text: { $search: 'fast search' } })
C. db.collection.find({ summary: { $regex: 'fast search' } })
D. db.collection.find({ $text: { $search: '\"fast search\"' } })

Solution

  1. Step 1: Recall how to search exact phrases with $text

    Exact phrase search requires double quotes around the phrase inside the $search string.
  2. Step 2: Evaluate each option

    db.collection.find({ $text: { $search: '"fast search"' } }) correctly uses single quotes outside and double quotes inside to search exact phrase. db.collection.find({ $text: { $search: 'fast search' } }) searches words separately. db.collection.find({ summary: { $regex: 'fast search' } }) uses regex, not text search. db.collection.find({ $text: { $search: '\"fast search\"' } }) escapes quotes incorrectly.
  3. Final Answer:

    db.collection.find({ $text: { $search: '"fast search"' } }) -> Option A
  4. Quick Check:

    Exact phrase search = double quotes inside $search string [OK]
Hint: Use double quotes inside $search string for exact phrase [OK]
Common Mistakes:
  • Not using quotes for exact phrase
  • Using regex instead of text search
  • Incorrectly escaping quotes
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard