Bird
Raised Fist0
MongoDBquery~10 mins

$and operator behavior 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 - $and operator behavior
Start Query
Evaluate Each Condition
Are All Conditions True?
NoReturn No Match
Yes
Return Document Match
The $and operator checks multiple conditions and returns documents only if all conditions are true.
Execution Sample
MongoDB
{ $and: [ { age: { $gt: 20 } }, { city: 'NY' } ] }
Find documents where age is greater than 20 AND city is 'NY'.
Execution Table
StepDocumentCondition 1 (age > 20)Condition 2 (city = 'NY')All Conditions True?Result
1{ age: 25, city: 'NY' }TrueTrueTrueMatch
2{ age: 18, city: 'NY' }FalseTrueFalseNo Match
3{ age: 30, city: 'LA' }TrueFalseFalseNo Match
4{ age: 22, city: 'NY' }TrueTrueTrueMatch
5{ age: 20, city: 'NY' }FalseTrueFalseNo Match
💡 All documents checked; only those with all conditions true are matched.
Variable Tracker
DocumentCondition 1 (age > 20)Condition 2 (city = 'NY')All Conditions True?
{ age: 25, city: 'NY' }TrueTrueTrue
{ age: 18, city: 'NY' }FalseTrueFalse
{ age: 30, city: 'LA' }TrueFalseFalse
{ age: 22, city: 'NY' }TrueTrueTrue
{ age: 20, city: 'NY' }FalseTrueFalse
Key Moments - 3 Insights
Why does a document with age 18 and city 'NY' not match?
Because the first condition (age > 20) is false for that document, so $and returns false overall (see execution_table row 2).
If one condition is false, does $and still return true?
No, $and requires all conditions to be true. If any condition is false, the whole $and is false (see execution_table rows 2, 3, and 5).
Can $and be used with just one condition?
Yes, but it behaves like that single condition alone. $and is useful when combining multiple conditions (not shown in table but general behavior).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the result for the document { age: 30, city: 'LA' }?
AMatch
BNo Match
CError
DPartial Match
💡 Hint
Check row 3 in the execution_table under 'Result' column.
At which step does the condition 'age > 20' become false?
AStep 2
BStep 4
CStep 1
DStep 3
💡 Hint
Look at the 'Condition 1 (age > 20)' column in execution_table.
If the second condition changed to city = 'LA', which document would match?
A{ age: 25, city: 'NY' }
B{ age: 18, city: 'NY' }
C{ age: 30, city: 'LA' }
D{ age: 22, city: 'NY' }
💡 Hint
Check which document has city 'LA' and age > 20 in variable_tracker.
Concept Snapshot
$and operator syntax:
{ $and: [ condition1, condition2, ... ] }
Returns documents only if ALL conditions are true.
If any condition is false, document is excluded.
Useful to combine multiple filters logically.
Full Transcript
The $and operator in MongoDB combines multiple conditions. It checks each condition on a document. If all conditions are true, the document matches. If any condition is false, the document does not match. For example, { $and: [ { age: { $gt: 20 } }, { city: 'NY' } ] } finds documents where age is greater than 20 and city is 'NY'. The execution table shows documents tested step-by-step, with condition results and final match decision. This helps beginners see how $and works internally.

Practice

(1/5)
1.

What does the $and operator do in a MongoDB query?

easy
A. It finds documents that match all the given conditions.
B. It finds documents that match any one of the given conditions.
C. It sorts documents based on multiple fields.
D. It deletes documents that match the conditions.

Solution

  1. Step 1: Understand the purpose of $and

    The $and operator combines multiple conditions and requires all to be true for a document to match.
  2. Step 2: Compare with other operators

    Unlike $or, which matches if any condition is true, $and needs all conditions true.
  3. Final Answer:

    It finds documents that match all the given conditions. -> Option A
  4. Quick Check:

    $and means all conditions must match [OK]
Hint: All conditions inside $and must be true to match [OK]
Common Mistakes:
  • Confusing $and with $or operator
  • Thinking $and sorts documents
  • Assuming $and deletes documents
2.

Which of the following is the correct syntax to use $and in a MongoDB query?

{ $and: [ { age: { $gt: 20 } }, { city: "NY" } ] }
easy
A. { $and: [ { age: { $gt: 20 } }, { city: "NY" } ] }
B. { $and: { age: 20, city: "NY" } }
C. { $and: ( { age: { $gt: 20 } }, { city: "NY" } ) }
D. { $and: { age: { $gt: 20 }, city: "NY" } }

Solution

  1. Step 1: Recall the syntax of $and

    The $and operator requires an array of condition objects inside square brackets.
  2. Step 2: Check each option's structure

    { $and: [ { age: { $gt: 20 } }, { city: "NY" } ] } correctly uses an array with two condition objects. Options A and B use objects instead of arrays, and C uses parentheses which is invalid.
  3. Final Answer:

    { $and: [ { age: { $gt: 20 } }, { city: "NY" } ] } -> Option A
  4. Quick Check:

    $and needs an array of conditions [OK]
Hint: Use square brackets [] for conditions inside $and [OK]
Common Mistakes:
  • Using curly braces {} instead of array []
  • Using parentheses () instead of array []
  • Putting conditions directly without array
3.

Given the collection users with documents:

[{ name: "Alice", age: 25, city: "NY" }, { name: "Bob", age: 30, city: "LA" }, { name: "Carol", age: 25, city: "LA" }]

What will the query { $and: [ { age: 25 }, { city: "LA" } ] } return?

medium
A. [{ name: "Alice", age: 25, city: "NY" }]
B. [{ name: "Bob", age: 30, city: "LA" }]
C. [{ name: "Carol", age: 25, city: "LA" }]
D. []

Solution

  1. Step 1: Understand the query conditions

    The query looks for documents where age is 25 AND city is "LA".
  2. Step 2: Check each document against conditions

    Alice has age 25 but city "NY" (fails city condition). Bob has city "LA" but age 30 (fails age condition). Carol has age 25 and city "LA" (matches both).
  3. Final Answer:

    [{ name: "Carol", age: 25, city: "LA" }] -> Option C
  4. Quick Check:

    Both conditions true only for Carol [OK]
Hint: Both conditions must match a document to be returned [OK]
Common Mistakes:
  • Selecting documents matching only one condition
  • Ignoring the AND logic of $and
  • Confusing city names or ages
4.

Consider this query:

{ $and: { age: { $gt: 20 }, city: "NY" } }

What is wrong with this query?

medium
A. The operator $gt cannot be used inside $and.
B. The conditions inside $and must be in an array, not an object.
C. The city value must be a number, not a string.
D. The query is correct and will work as expected.

Solution

  1. Step 1: Check the structure of $and

    The $and operator requires an array of conditions, but here it is given an object.
  2. Step 2: Identify the error

    Using an object instead of an array causes a syntax error in MongoDB queries.
  3. Final Answer:

    The conditions inside $and must be in an array, not an object. -> Option B
  4. Quick Check:

    $and needs an array of conditions [OK]
Hint: Always use square brackets [] for $and conditions [OK]
Common Mistakes:
  • Using object {} instead of array [] for $and
  • Assuming $gt is invalid inside $and
  • Thinking string values are not allowed
5.

You want to find documents in a products collection where the price is greater than 100 and the category is either "electronics" or "appliances". Which query correctly uses $and and $or to achieve this?

hard
A. { price: { $gt: 100 }, category: { $or: [ "electronics", "appliances" ] } }
B. { $or: [ { price: { $gt: 100 } }, { category: "electronics" }, { category: "appliances" } ] }
C. { $and: { price: { $gt: 100 }, category: { $in: [ "electronics", "appliances" ] } } }
D. { $and: [ { price: { $gt: 100 } }, { $or: [ { category: "electronics" }, { category: "appliances" } ] } ] }

Solution

  1. Step 1: Understand the conditions

    The query needs price > 100 AND category is either "electronics" OR "appliances".
  2. Step 2: Check each option's logic

    { $and: [ { price: { $gt: 100 } }, { $or: [ { category: "electronics" }, { category: "appliances" } ] } ] } correctly uses $and with price condition and an inner $or for categories. { $or: [ { price: { $gt: 100 } }, { category: "electronics" }, { category: "appliances" } ] } uses $or for all, which is incorrect. { price: { $gt: 100 }, category: { $or: [ "electronics", "appliances" ] } } uses invalid syntax for $or inside category. { $and: { price: { $gt: 100 }, category: { $in: [ "electronics", "appliances" ] } } } uses $and with an object instead of array, which is invalid.
  3. Final Answer:

    { $and: [ { price: { $gt: 100 } }, { $or: [ { category: "electronics" }, { category: "appliances" } ] } ] } -> Option D
  4. Quick Check:

    Combine $and for price and $or for categories [OK]
Hint: Use $and for all must match, $or inside for alternatives [OK]
Common Mistakes:
  • Using $or for all conditions instead of $and
  • Incorrect syntax for $or inside category
  • Using object instead of array for $and