Bird
Raised Fist0
MongoDBquery~3 mins

Why $eq for equality in MongoDB? - Purpose & Use Cases

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
The Big Idea

What if you could find exact data matches instantly without any mistakes?

The Scenario

Imagine you have a huge stack of paper forms with customer data. You want to find all customers named "Alice" by flipping through each form one by one.

The Problem

Manually checking each form is slow and tiring. You might miss some or make mistakes. It's hard to quickly find all matches when the pile is big.

The Solution

Using $eq in MongoDB lets you quickly ask the database: "Show me all records where the name equals 'Alice'." It finds matches instantly without flipping pages.

Before vs After
Before
Check each record: if (record.name == 'Alice') then select
After
{ name: { $eq: 'Alice' } }
What It Enables

You can instantly find exact matches in large data sets, saving time and avoiding errors.

Real Life Example

A store wants to find all orders where the status is exactly "shipped" to send tracking emails.

Key Takeaways

Manually searching data is slow and error-prone.

$eq lets you find exact matches easily.

This makes data queries fast, accurate, and simple.

Practice

(1/5)
1. What does the $eq operator do in a MongoDB query?
easy
A. It sorts documents in ascending order.
B. It deletes documents from the collection.
C. It updates documents with new values.
D. It matches documents where a field is equal to a specified value.

Solution

  1. Step 1: Understand the purpose of $eq

    The $eq operator is used to filter documents where a field exactly matches a given value.
  2. Step 2: Compare with other options

    Sorting, updating, and deleting are different operations and not related to $eq.
  3. Final Answer:

    It matches documents where a field is equal to a specified value. -> Option D
  4. Quick Check:

    $eq means equality match [OK]
Hint: Remember: $eq means 'equals' in queries [OK]
Common Mistakes:
  • Confusing $eq with sorting or updating operators
  • Thinking $eq modifies data instead of filtering
  • Assuming $eq works for inequality
2. Which of the following is the correct syntax to find documents where the field age equals 30 using $eq?
easy
A. { age: { $eq: 30 } }
B. { $eq: { age: 30 } }
C. { age: $eq: 30 }
D. { age == 30 }

Solution

  1. Step 1: Recall MongoDB query syntax for $eq

    The correct syntax uses the field name as key and an object with $eq as key and the value to match as value: { age: { $eq: 30 } }.
  2. Step 2: Identify incorrect syntax

    Options B, C, and D do not follow MongoDB query syntax rules and will cause errors.
  3. Final Answer:

    { age: { $eq: 30 } } -> Option A
  4. Quick Check:

    Field: { $eq: value } format [OK]
Hint: Use { field: { $eq: value } } for equality [OK]
Common Mistakes:
  • Placing $eq outside the field key
  • Using double colons or wrong operators
  • Using JavaScript equality syntax instead of MongoDB
3. Given the collection users with documents:
{ "name": "Alice", "age": 25 }, { "name": "Bob", "age": 30 }, { "name": "Carol", "age": 30 }

What will the query db.users.find({ age: { $eq: 30 } }) return?
medium
A. [{ "name": "Bob", "age": 30 }, { "name": "Carol", "age": 30 }]
B. [] (empty array)
C. [{ "name": "Alice", "age": 25 }]
D. Syntax error

Solution

  1. Step 1: Understand the query condition

    The query looks for documents where age equals 30.
  2. Step 2: Check documents matching the condition

    Bob and Carol have age 30, so both documents match and will be returned.
  3. Final Answer:

    [{ "name": "Bob", "age": 30 }, { "name": "Carol", "age": 30 }] -> Option A
  4. Quick Check:

    age == 30 returns Bob and Carol [OK]
Hint: Look for documents where field equals value [OK]
Common Mistakes:
  • Returning documents with age not equal to 30
  • Expecting only one document instead of all matches
  • Thinking $eq causes syntax error
4. You wrote the query db.products.find({ price: $eq: 100 }) but it gives an error. What is wrong?
medium
A. Field name price is invalid
B. Missing curly braces around $eq: 100 value
C. You cannot use $eq with numbers
D. The collection name products is incorrect

Solution

  1. Step 1: Check the query syntax

    The $eq operator must be inside an object as the value for the field key, like { price: { $eq: 100 } }.
  2. Step 2: Identify the missing braces

    The query is missing curly braces around $eq: 100, causing a syntax error.
  3. Final Answer:

    Missing curly braces around $eq: 100 value -> Option B
  4. Quick Check:

    Use { field: { $eq: value } } syntax [OK]
Hint: Always wrap $eq and value in braces { } [OK]
Common Mistakes:
  • Omitting braces around $eq operator
  • Assuming $eq works without object syntax
  • Blaming collection or field name incorrectly
5. You want to find documents in orders where the status is exactly "shipped" and the quantity is 10. Which query correctly uses $eq for both conditions?
hard
A. db.orders.find({ status: "shipped", quantity: 10 })
B. db.orders.find({ $eq: { status: "shipped", quantity: 10 } })
C. db.orders.find({ status: { $eq: "shipped" }, quantity: { $eq: 10 } })
D. db.orders.find({ status == "shipped", quantity == 10 })

Solution

  1. Step 1: Use $eq for each field separately

    Each field must have its own $eq operator inside an object: { status: { $eq: "shipped" } } and { quantity: { $eq: 10 } }.
  2. Step 2: Combine conditions in one query object

    Put both conditions inside the find query object to filter documents matching both.
  3. Final Answer:

    db.orders.find({ status: { $eq: "shipped" }, quantity: { $eq: 10 } }) -> Option C
  4. Quick Check:

    Use separate $eq for each field [OK]
Hint: Use separate $eq for each field in the query [OK]
Common Mistakes:
  • Trying to use one $eq for multiple fields
  • Using JavaScript equality operators in query
  • Omitting $eq and relying on implicit equality