Bird
Raised Fist0
MongoDBquery~30 mins

Regex queries in MongoDB - Mini Project: Build & Apply

Choose your learning style10 modes available
Regex Queries in MongoDB
📖 Scenario: You work at a small bookstore that stores book information in a MongoDB database. You want to find books by searching for patterns in their titles using regular expressions.
🎯 Goal: Build a MongoDB query that uses regex to find books with titles matching specific patterns.
📋 What You'll Learn
Create a collection called books with sample book documents
Add a regex pattern variable to search titles
Write a MongoDB query using $regex to find matching books
Complete the query with options to make the search case-insensitive
💡 Why This Matters
🌍 Real World
Bookstores and libraries often need to search for books by partial title matches or patterns. Regex queries in MongoDB help find these books efficiently.
💼 Career
Knowing how to use regex queries in MongoDB is useful for database developers and data analysts who work with flexible text search requirements.
Progress0 / 4 steps
1
Create the books collection with sample data
Create a MongoDB collection called books and insert these exact documents: { title: "The Great Gatsby", author: "F. Scott Fitzgerald" }, { title: "Great Expectations", author: "Charles Dickens" }, and { title: "Gone with the Wind", author: "Margaret Mitchell" }.
MongoDB
Hint

Use insertMany on db.books with an array of the three book objects.

2
Add a regex pattern variable for searching titles
Create a variable called pattern and set it to the regex string "Great" to search for titles containing the word "Great".
MongoDB
Hint

Use const pattern = "Great" to define the regex string.

3
Write a MongoDB query using $regex to find matching books
Write a MongoDB query that finds all documents in books where the title field matches the regex pattern stored in pattern. Use $regex with the variable pattern.
MongoDB
Hint

Use db.books.find({ title: { $regex: pattern } }) to query with regex.

4
Complete the query with case-insensitive option
Modify the query to add the $options field with value "i" to make the regex search case-insensitive.
MongoDB
Hint

Add $options: "i" inside the title query object to ignore case.

Practice

(1/5)
1. What does the $regex operator do in a MongoDB query?
easy
A. It searches for documents where a field matches a text pattern.
B. It sorts documents in ascending order.
C. It updates documents with new values.
D. It deletes documents matching a condition.

Solution

  1. Step 1: Understand the purpose of $regex

    The $regex operator is used to find text patterns inside string fields in MongoDB documents.
  2. Step 2: Compare with other operations

    Sorting, updating, and deleting are different operations and do not use $regex.
  3. Final Answer:

    It searches for documents where a field matches a text pattern. -> Option A
  4. Quick Check:

    $regex = pattern search [OK]
Hint: Remember: $regex means 'match pattern' in text fields [OK]
Common Mistakes:
  • Confusing $regex with sorting or updating operations
  • Thinking $regex modifies data instead of searching
  • Assuming $regex works on non-string fields
2. Which of the following is the correct syntax to find documents where the field name starts with 'A' using regex in MongoDB?
easy
A. {"name": {"$regex": "A$"}}
B. {"name": {"$regex": "A*"}}
C. {"name": {"$regex": "^A"}}
D. {"name": {"$regex": "[A]"}}

Solution

  1. Step 1: Understand regex anchors

    The caret ^ means the start of the string, so ^A matches strings starting with 'A'.
  2. Step 2: Check other options

    A$ matches strings ending with 'A', A* matches zero or more 'A's anywhere, and [A] matches any 'A' character anywhere.
  3. Final Answer:

    {"name": {"$regex": "^A"}} -> Option C
  4. Quick Check:

    Start with 'A' = ^A [OK]
Hint: Use ^ at start of pattern to match beginning of string [OK]
Common Mistakes:
  • Using $ instead of ^ to match start
  • Misunderstanding * as 'starts with'
  • Using character class [] without anchors
3. Given the collection documents: [{"city": "London"}, {"city": "london"}, {"city": "Londonderry"}], what will the query {"city": {"$regex": "^London$", "$options": "i"}} return?
medium
A. []
B. [{"city": "London"}]
C. [{"city": "Londonderry"}]
D. [{"city": "London"}, {"city": "london"}]

Solution

  1. Step 1: Analyze the regex pattern and options

    The pattern ^London$ matches exactly 'London' from start to end. The option i makes it case-insensitive.
  2. Step 2: Check which documents match

    "London" matches exactly, "london" matches ignoring case, but "Londonderry" does not match because it has extra characters.
  3. Final Answer:

    [{"city": "London"}, {"city": "london"}] -> Option D
  4. Quick Check:

    Exact match ignoring case = [{"city": "London"}, {"city": "london"}] [OK]
Hint: Use ^ and $ for exact match; 'i' option ignores case [OK]
Common Mistakes:
  • Ignoring case option and missing lowercase match
  • Assuming partial matches without anchors
  • Confusing $regex with substring search
4. Identify the error in this MongoDB query to find documents where title contains 'book' case-insensitive: {"title": {"$regex": "/book/i"}}
medium
A. The $regex operator cannot be used with strings.
B. The regex pattern should not be enclosed in slashes.
C. The $options field is missing.
D. The field name should be $pattern, not $regex.

Solution

  1. Step 1: Understand MongoDB regex syntax

    In MongoDB, the regex pattern is a string without enclosing slashes. Options like 'i' go in a separate $options field.
  2. Step 2: Identify the mistake in the query

    The pattern "/book/i" incorrectly includes slashes and option inside the string. It should be {"$regex": "book", "$options": "i"}.
  3. Final Answer:

    The regex pattern should not be enclosed in slashes. -> Option B
  4. Quick Check:

    MongoDB regex no slashes, use $options [OK]
Hint: Do not use /slashes/ in MongoDB regex patterns [OK]
Common Mistakes:
  • Including slashes around regex pattern
  • Putting options inside the pattern string
  • Using wrong field names like $pattern
5. You want to find all documents where the description field contains either 'cat' or 'dog' (case-insensitive). Which MongoDB query correctly uses regex to achieve this?
hard
A. {"description": {"$regex": "cat|dog", "$options": "i"}}
B. {"description": {"$regex": "[cat|dog]", "$options": "i"}}
C. {"description": {"$regex": "(cat|dog)", "$options": "g"}}
D. {"description": {"$regex": "cat|dog"}}

Solution

  1. Step 1: Understand regex alternation and options

    The pattern cat|dog matches either 'cat' or 'dog'. The i option makes it case-insensitive.
  2. Step 2: Evaluate each option

    {"description": {"$regex": "cat|dog", "$options": "i"}} correctly uses the pattern and case-insensitive option. {"description": {"$regex": "[cat|dog]", "$options": "i"}} uses character class incorrectly, matching any single character 'c', 'a', 't', '|', 'd', 'o', or 'g'. {"description": {"$regex": "(cat|dog)", "$options": "g"}} uses g which is not a valid MongoDB regex option. {"description": {"$regex": "cat|dog"}} misses the case-insensitive option.
  3. Final Answer:

    {"description": {"$regex": "cat|dog", "$options": "i"}} -> Option A
  4. Quick Check:

    Use | for OR and 'i' for ignore case [OK]
Hint: Use | inside regex and $options: 'i' for case-insensitive [OK]
Common Mistakes:
  • Using character classes [] instead of alternation |
  • Using invalid regex options like 'g' in MongoDB
  • Forgetting $options for case-insensitive search
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