Bird
Raised Fist0
Firebasecloud~20 mins

In and not-in queries in Firebase - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Firestore Query Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ service_behavior
intermediate
2:00remaining
What is the result of this Firestore 'in' query?
Consider a Firestore collection 'products' with documents having a field 'category'. What will this query return?

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

Choose the correct description of the query result.
ADocuments where 'category' is not 'electronics' or 'books'.
BDocuments where 'category' is both 'electronics' and 'books' at the same time.
CDocuments where 'category' is exactly the array ['electronics', 'books'].
DDocuments where 'category' is either 'electronics' or 'books'.
Attempts:
2 left
💡 Hint
Think about how 'in' works as a filter for multiple possible values.
❓ service_behavior
intermediate
2:00remaining
What happens if you use 'not-in' with more than 10 values in Firestore?
Firestore limits the number of values in 'in' and 'not-in' queries. What will happen if you run this query?

db.collection('users').where('status', 'not-in', ['active', 'pending', 'banned', 'deleted', 'archived', 'new', 'verified', 'suspended', 'guest', 'admin', 'moderator']).get()

Choose the correct outcome.
AThe query will fail with an error about too many values in 'not-in'.
BThe query will return all documents except those with the listed statuses.
CThe query will ignore extra values and only use the first 10.
DThe query will return no documents because 'not-in' does not support arrays.
Attempts:
2 left
💡 Hint
Check Firestore's documented limits on 'in' and 'not-in' queries.
❓ Architecture
advanced
2:00remaining
How to efficiently query documents excluding multiple values in Firestore?
You want to get all documents from 'orders' collection where 'status' is not any of ['cancelled', 'returned', 'failed']. Which approach is best to handle this in Firestore given its query limitations?
AAdd a boolean field 'isValid' and query where 'isValid' is true.
BRun multiple queries for each status and merge results client-side.
CUse a 'not-in' query with the array ['cancelled', 'returned', 'failed'].
DUse a 'where' query with '!=' operator for each status combined with 'or'.
Attempts:
2 left
💡 Hint
Consider Firestore's support for 'not-in' with up to 10 values.
❓ security
advanced
2:00remaining
What security risk arises from using 'in' queries with user input in Firestore?
If you allow users to provide an array of values for an 'in' query on a Firestore collection, what is a potential security concern?
AThe 'in' query exposes all documents regardless of security rules.
BUsers might query too many values causing denial of service by exhausting Firestore limits.
CUsers can modify documents directly through the 'in' query.
DThere is no security risk because Firestore automatically filters queries.
Attempts:
2 left
💡 Hint
Think about how query complexity affects backend resources.
🧠 Conceptual
expert
2:00remaining
Why can't Firestore 'not-in' queries be combined with '!=' filters on the same field?
Firestore does not allow combining 'not-in' and '!=' filters on the same field in a single query. Why is this restriction in place?
ABecause both filters exclude values and combining them creates conflicting conditions Firestore cannot resolve.
BBecause Firestore only supports one filter per field in any query.
CBecause '!=' filters are deprecated and replaced by 'not-in' queries.
DBecause combining these filters would return all documents, making the query pointless.
Attempts:
2 left
💡 Hint
Firestore does not allow multiple filters on the same field.

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