Bird
Raised Fist0
MongoDBquery~10 mins

$eq for equality in MongoDB - Step-by-Step Execution

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
Concept Flow - $eq for equality
Start Query
Check each document
Compare field value with $eq value
Include
Return matched documents
The query checks each document's field value against the $eq value. If equal, the document is included in the result.
Execution Sample
MongoDB
db.collection.find({ age: { $eq: 30 } })
Finds all documents where the age field equals 30.
Execution Table
StepDocumentField Value (age)Condition (age == 30)Result
1{ name: 'Alice', age: 25 }2525 == 30? FalseExclude
2{ name: 'Bob', age: 30 }3030 == 30? TrueInclude
3{ name: 'Carol', age: 35 }3535 == 30? FalseExclude
4{ name: 'Dave', age: 30 }3030 == 30? TrueInclude
5No more documents--Stop
💡 All documents checked, query returns only those with age equal to 30.
Variable Tracker
VariableStartAfter 1After 2After 3After 4Final
Current DocumentNone{ name: 'Alice', age: 25 }{ name: 'Bob', age: 30 }{ name: 'Carol', age: 35 }{ name: 'Dave', age: 30 }None
ageN/A25303530N/A
Condition ResultN/AFalseTrueFalseTrueN/A
Included in ResultN/ANoYesNoYesN/A
Key Moments - 2 Insights
Why does the document with age 25 get excluded even though it has an age field?
Because the $eq operator checks for exact equality. In the execution_table row 1, 25 == 30 is False, so the document is excluded.
What happens if a document does not have the age field?
It will be excluded because the field value is undefined and does not equal 30, similar to the False condition in the execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, which document is included at step 2?
A{ name: 'Bob', age: 30 }
B{ name: 'Alice', age: 25 }
C{ name: 'Carol', age: 35 }
D{ name: 'Dave', age: 30 }
💡 Hint
Check the 'Result' column at step 2 in the execution_table.
At which step does the condition age == 30 become false for the first time?
AStep 2
BStep 1
CStep 3
DStep 4
💡 Hint
Look at the 'Condition' column in the execution_table for step 1.
If the query was changed to { age: { $eq: 35 } }, which document would be included at step 3?
A{ name: 'Alice', age: 25 }
B{ name: 'Bob', age: 30 }
C{ name: 'Carol', age: 35 }
D{ name: 'Dave', age: 30 }
💡 Hint
Refer to the 'Field Value' and 'Condition' columns in the execution_table at step 3.
Concept Snapshot
$eq operator checks if a field's value equals a specified value.
Syntax: { field: { $eq: value } }
Returns documents where field == value.
Useful for exact matches in queries.
If field missing or not equal, document excluded.
Full Transcript
The $eq operator in MongoDB queries checks if a document's field value exactly matches a given value. The query examines each document one by one. For each document, it compares the field's value to the $eq value. If they are equal, the document is included in the results; otherwise, it is excluded. For example, querying { age: { $eq: 30 } } returns only documents where the age field is exactly 30. Documents with different ages or missing the age field are not included. This step-by-step process ensures only matching documents are returned.

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