Bird
Raised Fist0
Firebasecloud~5 mins

In and not-in queries in Firebase - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does an 'in' query do in Firebase?
An 'in' query finds documents where a specific field's value matches any value in a given list. It's like asking, "Is this value one of these options?"
Click to reveal answer
beginner
What is a 'not-in' query in Firebase?
A 'not-in' query finds documents where a field's value does NOT match any value in a given list. It filters out those values from the results.
Click to reveal answer
intermediate
What is the maximum number of values you can use in an 'in' or 'not-in' query list in Firebase?
You can include up to 10 values in the list for 'in' or 'not-in' queries.
Click to reveal answer
intermediate
Can you combine 'in' and 'not-in' queries on the same field in Firebase?
No, Firebase does not allow combining 'in' and 'not-in' queries on the same field in a single query.
Click to reveal answer
beginner
Why might you use 'in' queries instead of multiple separate queries?
Using 'in' queries lets you get all matching documents in one request, saving time and resources compared to running many separate queries.
Click to reveal answer
What does an 'in' query in Firebase do?
AFinds documents where a field matches any value in a list
BFinds documents where a field matches all values in a list
CFinds documents where a field does not exist
DDeletes documents matching a value
How many values can you include in an 'in' query list in Firebase?
A5
B10
C20
DUnlimited
What does a 'not-in' query do?
AFinds documents with fields not matching any value in a list
BFinds documents with fields matching values in a list
CFinds documents with missing fields
DUpdates documents with specific values
Can you combine 'in' and 'not-in' queries on the same field in one Firebase query?
AYes, always
BOnly if the lists don't overlap
COnly with special permissions
DNo, Firebase does not allow it
Why use an 'in' query instead of multiple separate queries?
AIt deletes unwanted documents automatically
BIt returns more data than separate queries
CIt reduces the number of requests and improves performance
DIt encrypts data during transfer
Explain how 'in' and 'not-in' queries work in Firebase and when you might use each.
Think about filtering documents by matching or excluding values.
You got /4 concepts.
    What are the limitations and best practices when using 'in' and 'not-in' queries in Firebase?
    Consider limits and how to write efficient queries.
    You got /4 concepts.

      Practice

      (1/5)
      1.

      What does the in query do in Firebase Firestore?

      easy
      A. Finds documents where a field is null
      B. Finds documents where a field does not exist
      C. Finds documents where a field matches exactly one value only
      D. Finds documents where a field matches any value in a given list

      Solution

      1. Step 1: Understand the purpose of in query

        The in query checks if a field's value matches any value from a list of values.
      2. Step 2: Compare with other options

        Null fields and non-existent fields describe different query types, while limiting to exactly one value is incorrect for in.
      3. Final Answer:

        Finds documents where a field matches any value in a given list -> Option D
      4. Quick Check:

        in query = matches any value in list [OK]
      Hint: Remember: 'in' means match any value from a list [OK]
      Common Mistakes:
      • Confusing 'in' with 'not-in' query
      • Thinking 'in' matches only one value
      • Assuming 'in' checks for field existence
      2.

      Which of the following is the correct syntax for a not-in query in Firestore?

      db.collection('users').where('age', ___, [18, 21, 25])
      easy
      A. 'notin'
      B. 'not-in'
      C. 'not_in'
      D. 'nin'

      Solution

      1. Step 1: Recall Firestore query operators

        Firestore uses exact strings for operators; the correct operator for excluding values is 'not-in'.
      2. Step 2: Check each option's validity

        'notin', 'not_in', and 'nin' are invalid syntax and will cause errors.
      3. Final Answer:

        'not-in' -> Option B
      4. Quick Check:

        Correct operator syntax = 'not-in' [OK]
      Hint: Use exact operator strings: 'not-in' with hyphen [OK]
      Common Mistakes:
      • Using 'notin' or 'not_in' instead of 'not-in'
      • Missing quotes around operator
      • Using unsupported operators like 'nin'
      3.

      Given this Firestore query:

      db.collection('products').where('category', 'in', ['books', 'games']).get()

      Which documents will be returned?

      medium
      A. Documents where category is either 'books' or 'games'
      B. Documents where category is not 'books' or 'games'
      C. Documents where category is exactly 'booksgames'
      D. All documents regardless of category

      Solution

      1. Step 1: Understand the 'in' query behavior

        The query filters documents where the 'category' field matches any value in the list ['books', 'games'].
      2. Step 2: Analyze each option

        Documents where category is either 'books' or 'games' matches the query logic. Documents where category is not 'books' or 'games' is the opposite. Documents where category is exactly 'booksgames' is a concatenation, which is incorrect. All documents regardless of category ignores the filter.
      3. Final Answer:

        Documents where category is either 'books' or 'games' -> Option A
      4. Quick Check:

        'in' query returns matching values in list [OK]
      Hint: Think: 'in' means any value inside the list [OK]
      Common Mistakes:
      • Confusing 'in' with 'not-in'
      • Assuming concatenation of list values
      • Ignoring the filter and expecting all documents
      4.

      What is wrong with this Firestore query?

      db.collection('orders').where('status', 'not-in', ['shipped', 'delivered', 'pending', 'cancelled', 'new', 'processing', 'confirmed', 'refunded', 'returned', 'failed', 'on_hold']).get()

      It throws an error. Why?

      medium
      A. The 'not-in' operator cannot be used with more than 10 values in the list
      B. The field 'status' does not exist in the collection
      C. The 'not-in' operator is not supported in Firestore
      D. The list has more than 20 values, exceeding Firestore limits

      Solution

      1. Step 1: Recall Firestore limits on 'not-in' queries

        Firestore limits 'not-in' and 'in' queries to a maximum of 10 values in the list.
      2. Step 2: Count values in the list

        The list has 11 values, exceeding the 10-value limit for 'not-in' queries.
      3. Step 3: Consider other options

        The list has more than 20 values, exceeding Firestore limits is incorrect because the list has 11 values. The 'not-in' operator is not supported in Firestore is wrong because 'not-in' is supported. The field 'status' does not exist in the collection is unrelated to the error.
      4. Final Answer:

        The 'not-in' operator cannot be used with more than 10 values in the list -> Option A
      5. Quick Check:

        'not-in' max 10 values limit causes errors [OK]
      Hint: Check list size: 'not-in' max 10 values allowed [OK]
      Common Mistakes:
      • Assuming 'not-in' supports unlimited list size
      • Blaming field existence without checking
      • Confusing 'not-in' support in Firestore
      5.

      You want to find all users whose role is neither 'admin' nor 'moderator' nor 'guest'. Which Firestore query is correct?

      hard
      A. db.collection('users').where('role', '!=', ['admin', 'moderator', 'guest']).get()
      B. db.collection('users').where('role', 'in', ['admin', 'moderator', 'guest']).get()
      C. db.collection('users').where('role', 'not-in', ['admin', 'moderator', 'guest']).get()
      D. db.collection('users').where('role', 'not-in', 'admin,moderator,guest').get()

      Solution

      1. Step 1: Understand the requirement

        You want users whose role is NOT any of the listed roles. This means excluding those roles.
      2. Step 2: Choose the correct operator and syntax

        The 'not-in' operator excludes documents with any value in the list. db.collection('users').where('role', 'not-in', ['admin', 'moderator', 'guest']).get() uses correct syntax with a list. db.collection('users').where('role', 'in', ['admin', 'moderator', 'guest']).get() includes only those roles, which is opposite. db.collection('users').where('role', '!=', ['admin', 'moderator', 'guest']).get() uses '!=' which does not accept lists. db.collection('users').where('role', 'not-in', 'admin,moderator,guest').get() uses a string instead of a list, which is invalid.
      3. Final Answer:

        db.collection('users').where('role', 'not-in', ['admin', 'moderator', 'guest']).get() -> Option C
      4. Quick Check:

        Use 'not-in' with list to exclude multiple values [OK]
      Hint: Use 'not-in' with array to exclude multiple values [OK]
      Common Mistakes:
      • Using '!=' with a list instead of a single value
      • Passing a string instead of an array for 'not-in'
      • Using 'in' instead of 'not-in' for exclusion
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard