Bird
Raised Fist0
MongoDBquery~5 mins

$nor operator behavior in MongoDB - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What does the $nor operator do in MongoDB?
The $nor operator performs a logical NOR operation on an array of query expressions. It returns documents that fail all the given conditions, meaning none of the conditions are true.
Click to reveal answer
intermediate
How is $nor different from $not in MongoDB?
$nor takes an array of conditions and returns documents where none of the conditions are true. $not negates a single condition. $nor is like combining multiple $not conditions with AND logic.
Click to reveal answer
beginner
Example: What documents does this query return?
{ $nor: [ { age: { $lt: 30 } }, { status: "A" } ] }
This query returns documents where age is NOT less than 30 AND status is NOT "A". So, only documents that fail both conditions are returned.
Click to reveal answer
intermediate
Can $nor be used with a single condition array? What happens?
Yes, $nor can be used with a single condition inside an array. It returns documents where that single condition is false, effectively negating that condition.
Click to reveal answer
advanced
What happens if the $nor array is empty in a query?
If the $nor array is empty, the query matches all documents because there are no conditions to fail, so none of the conditions are true by default.
Click to reveal answer
What does the $nor operator return in MongoDB?
ADocuments where none of the specified conditions are true
BDocuments where all specified conditions are true
CDocuments where at least one condition is true
DDocuments where exactly one condition is true
Which of these is equivalent to { $nor: [ { age: { $lt: 30 } } ] }?
A{ age: { $lte: 30 } }
B{ age: { $gte: 30 } }
C{ age: { $gt: 30 } }
D{ age: { $lt: 30 } }
If $nor is given an empty array, what documents are returned?
ANo documents
BOnly documents with null fields
CDocuments with at least one true condition
DAll documents
How does $nor combine multiple conditions?
AReturns documents where all conditions are true
BReturns documents where any condition is true
CReturns documents where all conditions are false
DReturns documents where exactly one condition is true
Which logical operator is $nor most similar to?
ANOT OR
BAND
COR
DXOR
Explain how the $nor operator works in MongoDB queries.
Think about how it combines multiple conditions with NOT and OR.
You got /4 concepts.
    Describe a real-life example where you might use $nor in a MongoDB query.
    Imagine you want to exclude people younger than 30 or with status 'A'.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the $nor operator do in MongoDB queries?
      easy
      A. Finds documents where all specified conditions are true
      B. Finds documents where at least one condition is true
      C. Finds documents where none of the specified conditions are true
      D. Finds documents that match exactly one condition

      Solution

      1. Step 1: Understand the purpose of $nor

        The $nor operator returns documents that do not satisfy any of the given conditions.
      2. Step 2: Compare with other logical operators

        Unlike $and or $or, $nor excludes documents matching any condition in its array.
      3. Final Answer:

        Finds documents where none of the specified conditions are true -> Option C
      4. Quick Check:

        $nor excludes all matching conditions = B [OK]
      Hint: Think: no conditions should be true for $nor [OK]
      Common Mistakes:
      • Confusing $nor with $or
      • Assuming it returns documents matching any condition
      • Thinking it requires all conditions to be true
      2. Which of the following is the correct syntax to use $nor in a MongoDB query to exclude documents where age is 25 or status is "active"?
      easy
      A. { $nor: { $or: [ { age: 25 }, { status: "active" } ] } }
      B. { $nor: { age: 25, status: "active" } }
      C. { $nor: [ age: 25, status: "active" ] }
      D. { $nor: [ { age: 25 }, { status: "active" } ] }

      Solution

      1. Step 1: Recall $nor syntax

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

        { $nor: [ { age: 25 }, { status: "active" } ] } correctly uses an array of conditions. Options B and D use objects incorrectly, and C has invalid array syntax.
      3. Final Answer:

        { $nor: [ { age: 25 }, { status: "active" } ] } -> Option D
      4. Quick Check:

        Array of conditions inside $nor = A [OK]
      Hint: Use square brackets for conditions array in $nor [OK]
      Common Mistakes:
      • Using curly braces instead of square brackets for conditions
      • Passing a single object instead of an array
      • Nesting $or inside $nor unnecessarily
      3. Given the collection documents:
      [{ "name": "Alice", "age": 30, "status": "active" }, { "name": "Bob", "age": 25, "status": "inactive" }, { "name": "Carol", "age": 35, "status": "active" }]

      What will be the result of this query?
      { $nor: [ { age: 25 }, { status: "active" } ] }
      medium
      A. [] (empty array)
      B. [{ "name": "Bob", "age": 25, "status": "inactive" }]
      C. [{ "name": "Bob", "age": 25, "status": "inactive" }, { "name": "Carol", "age": 35, "status": "active" }]
      D. [{ "name": "Bob", "age": 25, "status": "inactive" }, { "name": "Alice", "age": 30, "status": "active" }]

      Solution

      1. Step 1: Understand the $nor conditions

        The query excludes documents where age is 25 OR status is "active".
      2. Step 2: Check each document against conditions

        Alice: status "active" -> excluded; Bob: age 25 -> excluded; Carol: status "active" -> excluded.
      3. Final Answer:

        [] (empty array) -> Option A
      4. Quick Check:

        All documents match at least one condition, so none returned = A [OK]
      Hint: Exclude any document matching any condition in $nor [OK]
      Common Mistakes:
      • Returning documents that match one condition
      • Confusing $nor with $or
      • Assuming some documents pass when all match conditions
      4. You wrote this MongoDB query but it throws an error:
      { $nor: { age: { $gt: 30 }, status: "inactive" } }

      What is the problem and how to fix it?
      medium
      A. The field names must be strings; fix: { $nor: [ { "age": { $gt: 30 } }, { "status": "inactive" } ] }
      B. The conditions must be inside an array; fix: { $nor: [ { age: { $gt: 30 } }, { status: "inactive" } ] }
      C. The operator $gt is invalid; fix: use $gte instead
      D. The query must use $and instead of $nor

      Solution

      1. Step 1: Identify the syntax error

        $nor expects an array of condition objects, but here it has a single object.
      2. Step 2: Correct the syntax

        Wrap each condition inside its own object within an array to fix the error.
      3. Final Answer:

        The conditions must be inside an array; fix: { $nor: [ { age: { $gt: 30 } }, { status: "inactive" } ] } -> Option B
      4. Quick Check:

        $nor needs array of conditions = C [OK]
      Hint: Always use an array of conditions with $nor [OK]
      Common Mistakes:
      • Passing a single object instead of an array
      • Misusing comparison operators
      • Confusing $nor with $and
      5. You have a collection with documents:
      [{ "item": "pen", "qty": 10, "status": "A" }, { "item": "pencil", "qty": 5, "status": "D" }, { "item": "notebook", "qty": 15, "status": "A" }, { "item": "eraser", "qty": 0, "status": "D" }]

      Write a $nor query to find documents where qty is not 0 and status is not "D". Which query returns the correct documents?
      hard
      A. { $nor: [ { qty: 0 }, { status: "D" } ] }
      B. { $nor: [ { qty: { $ne: 0 } }, { status: { $ne: "D" } } ] }
      C. { $nor: [ { qty: { $eq: 0 } }, { status: { $ne: "D" } } ] }
      D. { $nor: [ { qty: { $gt: 0 } }, { status: { $ne: "D" } } ] }

      Solution

      1. Step 1: Understand the requirement

        We want documents where qty is NOT 0 and status is NOT "D".
      2. Step 2: Use $nor to exclude documents with qty 0 or status "D"

        { $nor: [ { qty: 0 }, { status: "D" } ] } excludes documents with qty 0 or status "D", so it returns documents matching the requirement.
      3. Final Answer:

        { $nor: [ { qty: 0 }, { status: "D" } ] } -> Option A
      4. Quick Check:

        Exclude unwanted values with $nor = D [OK]
      Hint: Use $nor to exclude unwanted values directly [OK]
      Common Mistakes:
      • Using $ne inside $nor incorrectly
      • Confusing inclusion with exclusion logic
      • Using wrong comparison operators inside conditions