Bird
Raised Fist0
MongoDBquery~5 mins

$all operator for matching all elements 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 $all operator do in MongoDB?
The $all operator matches documents where the array field contains all the specified elements, regardless of order or extra elements.
Click to reveal answer
beginner
How would you find documents where the field tags contains both 'red' and 'blue' using $all?
Use { tags: { $all: ['red', 'blue'] } } to find documents where the tags array has both 'red' and 'blue'.
Click to reveal answer
beginner
Can $all match elements in any order within the array?
Yes, $all does not care about the order of elements in the array; it only checks that all specified elements are present.
Click to reveal answer
beginner
What happens if the array field contains extra elements besides those specified in $all?
The document still matches because $all only requires that all specified elements are present, extra elements do not prevent a match.
Click to reveal answer
intermediate
Is $all operator useful for matching nested arrays or objects?
Yes, $all can match elements that are objects or nested arrays, as long as the exact elements are specified in the query.
Click to reveal answer
What does { colors: { $all: ['red', 'green'] } } find?
ADocuments where colors array contains either 'red' or 'green'
BDocuments where colors array contains both 'red' and 'green'
CDocuments where colors array contains only 'red' and 'green'
DDocuments where colors array contains 'red' before 'green'
If a document has tags: ['blue', 'red', 'yellow'], will { tags: { $all: ['red', 'blue'] } } match it?
AYes
BNo
COnly if order is 'red' then 'blue'
DOnly if no extra elements exist
Can $all be used to match nested objects inside arrays?
AOnly with strings
BNo, it only works with simple values
COnly with numbers
DYes, if exact objects are specified
Which operator would you use to find documents where an array contains all specified elements?
A$all
B$in
C$eq
D$exists
Does $all require the array to have only the specified elements?
AYes, only specified elements allowed
BIt depends on the order
CNo, extra elements are allowed
DIt depends on the array length
Explain how the $all operator works in MongoDB queries.
Think about how you check if a basket has all fruits you want, no matter the order or extra fruits.
You got /3 concepts.
    Describe a real-life example where you would use the $all operator.
    Imagine you want to find a recipe that uses all your favorite ingredients.
    You got /3 concepts.

      Practice

      (1/5)
      1.

      What does the $all operator do in MongoDB queries?

      easy
      A. Matches documents where an array contains any one of the specified values.
      B. Matches documents where an array contains all specified values.
      C. Matches documents where an array contains exactly one specified value.
      D. Matches documents where an array is empty.

      Solution

      1. Step 1: Understand the purpose of $all

        The $all operator is used to find documents where an array field contains all the values specified in the query.
      2. Step 2: Compare with other operators

        Unlike $in which matches any value, $all requires all values to be present in the array.
      3. Final Answer:

        Matches documents where an array contains all specified values. -> Option B
      4. Quick Check:

        $all = all values present [OK]
      Hint: Remember: $all means every value must be in the array [OK]
      Common Mistakes:
      • Confusing $all with $in operator
      • Thinking $all checks order of elements
      • Assuming $all matches partial values
      2.

      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"] } }
      easy
      A. { tags: { $all: ["red", "blue"] } }
      B. { tags: { $all: "red", "blue" } }
      C. { tags: { $all: "red blue" } }
      D. { tags: { $all: { "red", "blue" } } }

      Solution

      1. Step 1: Check the correct structure for $all

        The $all operator requires an array of values to match all elements.
      2. 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.
      3. Final Answer:

        { tags: { $all: ["red", "blue"] } } -> Option A
      4. Quick Check:

        Correct array syntax for $all [OK]
      Hint: Use square brackets [] to list values inside $all [OK]
      Common Mistakes:
      • 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
      3.

      Given the collection documents:

      [{ "colors": ["red", "green", "blue"] }, { "colors": ["red", "yellow"] }, { "colors": ["blue", "green", "red"] }]

      What will the query { colors: { $all: ["red", "blue"] } } return?

      medium
      A. No documents
      B. Document 2 only
      C. Documents 1 and 3
      D. All three documents

      Solution

      1. 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.
      2. Step 2: Apply $all condition

        The query matches documents where both "red" and "blue" are present, so documents 1 and 3 match.
      3. Final Answer:

        Documents 1 and 3 -> Option C
      4. Quick Check:

        Both arrays contain "red" and "blue" [OK]
      Hint: Check each array contains all values, order doesn't matter [OK]
      Common Mistakes:
      • Assuming order matters for $all
      • Including documents missing one value
      • Confusing $all with $in behavior
      4.

      Identify the error in this query that tries to find documents where features array contains both "wifi" and "parking":

      { features: { $all: "wifi", "parking" } }
      medium
      A. The field name should be inside quotes.
      B. The values should be inside curly braces instead of quotes.
      C. The query should use $in instead of $all.
      D. The $all operator requires an array of values, not separate arguments.

      Solution

      1. Step 1: Analyze the $all operator usage

        The $all operator expects a single array containing all values to match.
      2. Step 2: Identify the syntax error

        The query incorrectly passes two separate string arguments instead of an array. It should be { $all: ["wifi", "parking"] }.
      3. Final Answer:

        The $all operator requires an array of values, not separate arguments. -> Option D
      4. Quick Check:

        $all needs an array [OK]
      Hint: Always wrap $all values in an array [] [OK]
      Common Mistakes:
      • Passing multiple values without array brackets
      • Using $in when $all is needed
      • Misplacing quotes around field names
      5.

      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?

      hard
      A. { ingredients: { $all: ["flour", "sugar"], $nin: ["nuts"] } }
      B. { ingredients: { $all: ["flour", "sugar", "nuts"] } }
      C. { ingredients: { $in: ["flour", "sugar"], $nin: ["nuts"] } }
      D. { ingredients: { $all: ["flour", "sugar"] }, ingredients: { $nin: ["nuts"] } }

      Solution

      1. Step 1: Use $all to match both "flour" and "sugar"

        The $all operator ensures the array contains both these ingredients.
      2. Step 2: Use $nin to exclude "nuts"

        The $nin operator excludes documents where the array contains "nuts".
      3. 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.
      4. Final Answer:

        { ingredients: { $all: ["flour", "sugar"], $nin: ["nuts"] } } -> Option A
      5. Quick Check:

        All required and no excluded ingredients [OK]
      Hint: Combine $all and $nin inside one field object [OK]
      Common Mistakes:
      • Putting $all and $nin in separate objects for same field
      • Using $in instead of $all for required ingredients
      • Including excluded items inside $all array