Bird
Raised Fist0
MongoDBquery~5 mins

Query filter syntax 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 is a query filter in MongoDB?
A query filter is a way to specify conditions to find documents in a collection that match certain criteria.
Click to reveal answer
beginner
How do you filter documents where the field 'age' is exactly 25?
Use { "age": 25 } as the filter to find documents where the 'age' field equals 25.
Click to reveal answer
beginner
What operator do you use to find documents where a field is greater than a value?
Use the $gt operator. For example, { "age": { "$gt": 30 } } finds documents where 'age' is greater than 30.
Click to reveal answer
intermediate
How do you combine multiple conditions in a MongoDB query filter?
By default, listing multiple fields means AND. For OR, use the $or operator with an array of conditions.
Click to reveal answer
intermediate
What does this filter do? { "status": { "$in": ["A", "B"] } }
It finds documents where the 'status' field is either 'A' or 'B'. The $in operator checks if the field matches any value in the array.
Click to reveal answer
Which filter finds documents where 'score' is less than 50?
A{ "score": { "$eq": 50 } }
B{ "score": { "$gt": 50 } }
C{ "score": 50 }
D{ "score": { "$lt": 50 } }
How do you find documents where 'age' is 20 AND 'status' is 'active'?
A{ "$or": [ { "age": 20 }, { "status": "active" } ] }
B{ "age": 20, "status": "active" }
C{ "age": { "$eq": 20 }, "status": { "$eq": "active" } }
D{ "$and": [ { "age": 20 }, { "status": "active" } ] }
What does the $ne operator do?
AMatches values greater than the specified value
BMatches values equal to the specified value
CMatches values not equal to the specified value
DMatches values less than the specified value
Which filter finds documents where 'category' is either 'books' or 'electronics'?
A{ "category": { "$in": ["books", "electronics"] } }
B{ "category": { "$all": ["books", "electronics"] } }
C{ "category": "books" }
D{ "$or": [ { "category": "books" }, { "category": "electronics" } ] }
How do you find documents where 'price' is between 10 and 20 inclusive?
A{ "price": { "$gte": 10, "$lte": 20 } }
B{ "price": { "$gt": 10, "$lt": 20 } }
C{ "price": { "$in": [10, 20] } }
D{ "price": { "$ne": 10, "$ne": 20 } }
Explain how to write a MongoDB query filter to find documents where a field matches multiple conditions.
Think about combining conditions with AND and OR.
You got /4 concepts.
    Describe the purpose and usage of the $in operator in MongoDB query filters.
    It helps find documents matching any value from a set.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does a MongoDB query filter do?
      { age: 25 }
      easy
      A. Deletes documents where age is 25
      B. Updates documents to set age to 25
      C. Selects documents where the age field is exactly 25
      D. Creates a new document with age 25

      Solution

      1. Step 1: Understand the role of a query filter

        A query filter in MongoDB is used to find documents that match certain conditions, not to modify or delete them.
      2. Step 2: Analyze the filter { age: 25 }

        This filter matches documents where the field age has the value 25 exactly.
      3. Final Answer:

        Selects documents where the age field is exactly 25 -> Option C
      4. Quick Check:

        Query filter = select matching documents [OK]
      Hint: Filters pick matching data, not modify or delete [OK]
      Common Mistakes:
      • Confusing filter with update or delete commands
      • Thinking filter creates or changes documents
      • Assuming filter matches partial or range values without operators
      2. Which of these is the correct syntax to find documents where score is greater than 80?
      easy
      A. { score > 80 }
      B. { score: gt 80 }
      C. { $score: { gt: 80 } }
      D. { score: { $gt: 80 } }

      Solution

      1. Step 1: Recall MongoDB operator syntax

        MongoDB uses JSON objects with operators starting with a dollar sign, like $gt for 'greater than'.
      2. Step 2: Check each option

        { score: { $gt: 80 } } uses { score: { $gt: 80 } } which is correct syntax. Others miss the dollar sign or use invalid syntax.
      3. Final Answer:

        { score: { $gt: 80 } } -> Option D
      4. Quick Check:

        Use $gt for greater than in filters [OK]
      Hint: Operators start with $ inside field object [OK]
      Common Mistakes:
      • Omitting $ before operator
      • Using comparison operators like > directly
      • Wrong operator names without $
      3. Given the collection documents:
      { name: "Alice", age: 30 }
      { name: "Bob", age: 25 }
      { name: "Carol", age: 30 }

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

      Solution

      1. Step 1: Understand the filter condition

        The filter { age: 30 } matches documents where the age field equals 30.
      2. Step 2: Identify matching documents

        Documents for Alice and Carol have age 30, so both match. Bob has age 25, so does not match.
      3. Final Answer:

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

        Filter matches exact age 30 documents [OK]
      Hint: Filter matches exact field values without operators [OK]
      Common Mistakes:
      • Expecting only one document returned
      • Confusing filter with update or delete
      • Thinking filter matches partial or range without operators
      4. What is wrong with this MongoDB query filter?
      db.collection.find({ age: $gt: 20 })
      medium
      A. Using $gt instead of $gte
      B. Missing curly braces around $gt operator
      C. Field name should be $age, not age
      D. No error, query is correct

      Solution

      1. Step 1: Check operator syntax in filter

        MongoDB requires operators like $gt to be inside an object as a value for the field key.
      2. Step 2: Identify the syntax error

        The query uses { age: $gt: 20 } which is invalid. It should be { age: { $gt: 20 } } with curly braces around $gt: 20.
      3. Final Answer:

        Missing curly braces around $gt operator -> Option B
      4. Quick Check:

        Operators must be inside braces as field values [OK]
      Hint: Put operators inside braces after field name [OK]
      Common Mistakes:
      • Omitting braces around operator
      • Using wrong operator names
      • Misplacing $ sign
      5. You want to find documents where status is either "active" or "pending". Which filter correctly does this?
      hard
      A. { status: { $in: ["active", "pending"] } }
      B. { status: { $or: ["active", "pending"] } }
      C. { $or: { status: "active", status: "pending" } }
      D. { status: "active" || "pending" }

      Solution

      1. Step 1: Understand how to match multiple values

        MongoDB uses $in operator to match a field against any value in a list.
      2. Step 2: Analyze each option

        { status: { $in: ["active", "pending"] } } uses { status: { $in: ["active", "pending"] } } which is correct. { status: { $or: ["active", "pending"] } } uses invalid operator $or inside field. { $or: { status: "active", status: "pending" } } has wrong syntax for $or. { status: "active" || "pending" } uses invalid JavaScript syntax.
      3. Final Answer:

        { status: { $in: ["active", "pending"] } } -> Option A
      4. Quick Check:

        Use $in for matching any value in list [OK]
      Hint: Use $in with array for multiple value matches [OK]
      Common Mistakes:
      • Using $or inside field instead of top-level
      • Wrong syntax for $or operator
      • Using JavaScript operators inside filter