A Firestore collection is like a folder that holds multiple documents. It organizes data into groups so you can find and manage related information easily.
Click to reveal answer
beginner
What is a Firestore document?
A Firestore document is a single record inside a collection. It stores data as fields with values, similar to a row in a spreadsheet.
Click to reveal answer
intermediate
Can a Firestore document contain subcollections?
Yes, a Firestore document can have subcollections inside it. This lets you create nested data structures, like folders inside folders.
Click to reveal answer
beginner
How do Firestore collections and documents relate to each other?
Collections hold documents, and documents hold data fields or subcollections. You always access data by specifying a collection and then a document inside it.
Click to reveal answer
intermediate
Why does Firestore use collections and documents instead of tables and rows?
Firestore uses collections and documents to allow flexible, hierarchical data storage. This helps store complex data easily and scale well in cloud apps.
Click to reveal answer
What is the smallest unit of data storage in Firestore?
AField
BDocument
CCollection
DDatabase
✗ Incorrect
A document is the smallest unit that stores data fields in Firestore.
Which of these can contain multiple documents in Firestore?
ASubcollection
BDocument
CField
DCollection
✗ Incorrect
A collection holds multiple documents.
Can a Firestore document exist without being inside a collection?
ANo, documents must be inside collections
BYes, documents can stand alone
COnly if it has subcollections
DOnly in the root database
✗ Incorrect
Documents must always be inside collections in Firestore.
What is a subcollection in Firestore?
AA database inside Firestore
BA field inside a document
CA collection inside a document
DA document inside a collection
✗ Incorrect
A subcollection is a collection nested inside a document.
How do you access data in Firestore?
ABy specifying a collection and then a document
BBy specifying a database only
CBy specifying a field only
DBy specifying a subcollection only
✗ Incorrect
You access data by choosing a collection and then a document inside it.
Explain how Firestore organizes data using collections and documents.
Think of folders and files on your computer.
You got /4 concepts.
Describe why Firestore uses collections and documents instead of traditional tables and rows.
Consider how cloud apps need to store different types of data.
You got /4 concepts.
Practice
(1/5)
1. What is the correct way to describe Firestore's data structure?
easy
A. Documents are the top-level containers holding collections.
B. Documents contain collections, and collections contain key-value pairs.
C. Collections contain key-value pairs directly without documents.
D. Collections contain documents, and documents contain key-value pairs.
Solution
Step 1: Understand Firestore data hierarchy
Firestore organizes data with collections at the top level, which hold documents.
Step 2: Identify what documents contain
Documents store data as key-value pairs, not collections directly.
Final Answer:
Collections contain documents, and documents contain key-value pairs. -> Option D
Quick Check:
Firestore data = collections > documents > key-value pairs [OK]
Hint: Remember: Collections hold documents, documents hold data [OK]
Common Mistakes:
Thinking documents hold collections directly
Assuming collections store key-value pairs without documents
Confusing the order of collections and documents
2. Which of the following is the correct syntax to get a reference to a document named user123 inside a collection users in Firestore using Node.js?
easy
A. const docRef = firestore.doc('user123/users');
B. const docRef = firestore.collection('users').doc('user123');
C. const docRef = firestore.collection('user123').doc('users');
D. const docRef = firestore.doc('users').doc('user123');
Solution
Step 1: Identify correct method to access collection and document
Use collection('users') to access the collection, then doc('user123') to get the document.
Step 2: Check path correctness
Direct firestore.doc(full/path) works for existing paths, but incorrect paths, reversed order, or misusing doc() on document references fail. Chaining collection().doc() is recommended.
Final Answer:
const docRef = firestore.collection('users').doc('user123'); -> Option B
Quick Check:
Use collection().doc() chaining for document refs [OK]
Hint: Chain collection() then doc() for document reference [OK]
Common Mistakes:
Swapping collection and document names
Using firestore.doc() with incorrect path format
Confusing collection() and doc() order
3. Given the following Firestore code snippet, what will be the output if the document user123 exists with fields {name: 'Alice', age: 30}?
const docRef = firestore.collection('users').doc('user123');
const docSnap = await docRef.get();
if (docSnap.exists) {
console.log(docSnap.data());
} else {
console.log('No such document!');
}
medium
A. 'No such document!'
B. undefined
C. { name: 'Alice', age: 30 }
D. Error: Document not found
Solution
Step 1: Check if document exists
The code checks docSnap.exists, which is true if the document is present.
Step 2: Output document data
If exists, docSnap.data() returns the document fields as an object.
Final Answer:
{ name: 'Alice', age: 30 } -> Option C
Quick Check:
docSnap.exists true means data() returns fields [OK]
Hint: docSnap.exists true means data() returns document fields [OK]
Common Mistakes:
Assuming data() returns undefined if document exists
Confusing exists check with data presence
Expecting error instead of 'No such document!' message
4. You wrote this Firestore code to get a document but docSnap.exists is false:
A. Missing document ID in doc() causes a reference to a non-existing document.
B. You cannot call get() on a document reference.
C. Collection name 'users' is invalid without quotes.
D. You must use firestore.doc() instead of collection().doc().
Solution
Step 1: Check doc() usage
Calling doc() without an ID creates a reference to a new document with an auto-generated ID, but it does not exist yet.
Step 2: Understand get() on new doc reference
Trying to get() returns a snapshot with exists=false because the document does not exist.
Final Answer:
Missing document ID in doc() causes a reference to a non-existing document. -> Option A
Quick Check:
doc() needs ID to get existing document [OK]
Hint: Always provide document ID in doc() to read existing document [OK]
Common Mistakes:
Assuming doc() without ID points to existing document
Thinking get() cannot be called on document references
Confusing collection and document method usage
5. You want to store user profiles in Firestore where each user has multiple addresses. Which is the best Firestore structure to model this data?
hard
A. A collection 'users' with documents for each user, and each user document has a subcollection 'addresses' with address documents.
B. A single collection 'addresses' with documents containing user info and address fields combined.
C. A collection 'users' where each document stores all addresses as a large array field.
D. Multiple collections named after each user ID, each containing address documents.
Solution
Step 1: Understand Firestore best practice for one-to-many
Use a main collection for users, and subcollections for related multiple items like addresses.
Step 2: Evaluate options
A collection 'users' with documents for each user, and each user document has a subcollection 'addresses' with address documents. uses subcollections for addresses, which is scalable and organized. A single collection 'addresses' with documents containing user info and address fields combined. mixes user and address data in one collection, which is less clear. A collection 'users' where each document stores all addresses as a large array field. stores all addresses in one field, which can be inefficient. Multiple collections named after each user ID, each containing address documents. creates many collections dynamically, which is not recommended.
Final Answer:
A collection 'users' with documents for each user, and each user document has a subcollection 'addresses' with address documents. -> Option A
Quick Check:
Use subcollections for related multiple items [OK]
Hint: Use subcollections for multiple related documents per user [OK]
Common Mistakes:
Storing multiple addresses in one array field causing size limits
Creating dynamic collections per user causing management issues
Mixing unrelated data in one collection
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.