The $all operator helps you find documents where an array contains all the specified values. It is like checking if a basket has all the fruits you want.
$all operator for matching all elements in MongoDB
Start learning this pattern below
Jump into concepts and practice - no test required
{ field: { $all: [ value1, value2, ... ] } }The field must be an array in the document.
The query matches documents where the array contains all listed values, in any order.
tags array contains both "red" and "blue".{ tags: { $all: ["red", "blue"] } }skills array.{ skills: { $all: ["JavaScript", "Python"] } }items array contains all three fruits.{ items: { $all: ["apple", "banana", "orange"] } }This example inserts three products with different features. Then it finds products whose features array contains both "waterproof" and "durable".
db.products.insertMany([
{ name: "Product A", features: ["waterproof", "lightweight", "durable"] },
{ name: "Product B", features: ["lightweight", "compact"] },
{ name: "Product C", features: ["waterproof", "durable"] }
])
// Find products that have both "waterproof" and "durable" features
db.products.find({ features: { $all: ["waterproof", "durable"] } })The $all operator does not care about the order of elements in the array.
If the array in the document is missing any of the specified values, the document will not match.
You can combine $all with other query operators for more complex searches.
$all matches documents where an array contains all specified values.
It is useful when you want to ensure multiple items are present in an array.
The order of values does not matter for matching.
Practice
What does the $all operator do in MongoDB queries?
Solution
Step 1: Understand the purpose of
The$all$alloperator is used to find documents where an array field contains all the values specified in the query.Step 2: Compare with other operators
Unlike$inwhich matches any value,$allrequires all values to be present in the array.Final Answer:
Matches documents where an array contains all specified values. -> Option BQuick Check:
$all= all values present [OK]
- Confusing $all with $in operator
- Thinking $all checks order of elements
- Assuming $all matches partial values
Which of the following is the correct syntax to find documents where the tags array contains both "red" and "blue" using $all?
{ tags: { $all: ["red", "blue"] } }Solution
Step 1: Check the correct structure for $all
The$alloperator requires an array of values to match all elements.Step 2: Validate each option's syntax
{ tags: { $all: ["red", "blue"] } } correctly uses an array with square brackets. Options A, B, and D use incorrect syntax for arrays or objects.Final Answer:
{ tags: { $all: ["red", "blue"] } } -> Option AQuick Check:
Correct array syntax for $all [OK]
- Using curly braces {} instead of square brackets []
- Passing values as separate arguments instead of an array
- Using a string instead of an array for $all
Given the collection documents:
[{ "colors": ["red", "green", "blue"] }, { "colors": ["red", "yellow"] }, { "colors": ["blue", "green", "red"] }]What will the query { colors: { $all: ["red", "blue"] } } return?
Solution
Step 1: Check each document's colors array
Document 1 has ["red", "green", "blue"] which includes both "red" and "blue". Document 2 has ["red", "yellow"] missing "blue". Document 3 has ["blue", "green", "red"] which includes both.Step 2: Apply $all condition
The query matches documents where both "red" and "blue" are present, so documents 1 and 3 match.Final Answer:
Documents 1 and 3 -> Option CQuick Check:
Both arrays contain "red" and "blue" [OK]
- Assuming order matters for $all
- Including documents missing one value
- Confusing $all with $in behavior
Identify the error in this query that tries to find documents where features array contains both "wifi" and "parking":
{ features: { $all: "wifi", "parking" } }Solution
Step 1: Analyze the $all operator usage
The $all operator expects a single array containing all values to match.Step 2: Identify the syntax error
The query incorrectly passes two separate string arguments instead of an array. It should be{ $all: ["wifi", "parking"] }.Final Answer:
The $all operator requires an array of values, not separate arguments. -> Option DQuick Check:
$all needs an array [OK]
- Passing multiple values without array brackets
- Using $in when $all is needed
- Misplacing quotes around field names
You have a collection of documents with a field ingredients which is an array of strings. You want to find all recipes that contain both "flour" and "sugar", but not "nuts". Which query correctly uses $all and other operators to achieve this?
Solution
Step 1: Use $all to match both "flour" and "sugar"
The $all operator ensures the array contains both these ingredients.Step 2: Use $nin to exclude "nuts"
The $nin operator excludes documents where the array contains "nuts".Step 3: Combine both conditions correctly
{ ingredients: { $all: ["flour", "sugar"], $nin: ["nuts"] } } combines $all and $nin inside the same field query, which is valid MongoDB syntax.Final Answer:
{ ingredients: { $all: ["flour", "sugar"], $nin: ["nuts"] } } -> Option AQuick Check:
All required and no excluded ingredients [OK]
- Putting $all and $nin in separate objects for same field
- Using $in instead of $all for required ingredients
- Including excluded items inside $all array
