Bird
Raised Fist0
Firebasecloud~20 mins

Adding documents (add vs set) in Firebase - Practice Questions

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Firestore Document Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ service_behavior
intermediate
2:00remaining
Difference in document ID generation between add() and set()

In Firebase Firestore, what happens when you use add() compared to set() without specifying a document ID?

ABoth add() and set() automatically generate unique document IDs if none is specified.
Badd() automatically generates a unique document ID; set() requires you to specify the document ID explicitly.
Cadd() requires you to specify the document ID; set() automatically generates a unique document ID.
DNeither add() nor set() can create documents without specifying a document ID.
Attempts:
2 left
💡 Hint

Think about which method is designed for quick document creation without manual ID management.

❓ Configuration
intermediate
2:00remaining
Using set() to overwrite vs merge document data

When using set() in Firestore, how can you update only specific fields without overwriting the entire document?

AUse set() without any options; it automatically merges fields.
BUse add() instead of set() to update specific fields without overwriting.
CUse set() with the option <code>{ merge: true }</code> to update specific fields without overwriting the whole document.
DUse set() with the option <code>{ overwrite: false }</code> to update specific fields.
Attempts:
2 left
💡 Hint

Check the options object passed to set() for controlling overwrite behavior.

❓ Architecture
advanced
2:30remaining
Choosing add() vs set() for user-generated content

You are designing a Firestore database to store user comments. Users can add comments freely. Which method is best to add new comments to the comments collection and why?

AUse add() but manually generate IDs to control comment IDs.
BUse set() with a user-generated ID to keep track of comments by user ID.
CUse set() with a timestamp as the document ID to order comments chronologically.
DUse add() to let Firestore generate unique IDs automatically, ensuring no ID conflicts and easy scalability.
Attempts:
2 left
💡 Hint

Consider which method simplifies adding many documents without manual ID management.

❓ security
advanced
2:30remaining
Security implications of using set() with client-generated IDs

What is a potential security risk when clients use set() with client-generated document IDs in Firestore?

AClients might overwrite or delete documents they should not have access to by guessing document IDs.
BClients cannot write data without server approval, so no risk exists.
CUsing client-generated IDs causes Firestore to reject writes automatically.
DThere is no difference in security risk between add() and set() with client-generated IDs.
Attempts:
2 left
💡 Hint

Think about how document IDs control access and data integrity.

✅ Best Practice
expert
3:00remaining
Best practice for atomic document creation with known ID

You need to create a Firestore document with a specific ID only if it does not already exist. Which approach ensures atomic creation without overwriting existing data?

AUse a transaction to check if the document exists, then create it with set() if it does not.
BUse set() with <code>{ merge: true }</code> to create or update the document safely.
CUse add() with the specific ID passed as a parameter to create the document.
DUse set() without options; it will create the document only if it does not exist.
Attempts:
2 left
💡 Hint

Consider how to avoid race conditions when creating documents with known IDs.

Practice

(1/5)
1. What is the main difference between add and set when adding documents in Firebase?
easy
A. add creates a document with an automatic unique ID, set uses a specified ID.
B. add updates existing documents, set only creates new documents.
C. add deletes documents, set reads documents.
D. add requires a document ID, set generates one automatically.

Solution

  1. Step 1: Understand add behavior

    add creates a new document with a unique ID generated by Firebase automatically.
  2. Step 2: Understand set behavior

    set creates or updates a document at a specified ID you provide.
  3. Final Answer:

    add creates a document with an automatic unique ID, set uses a specified ID. -> Option A
  4. Quick Check:

    add auto ID, set specified ID = A [OK]
Hint: Remember: add auto-generates ID, set needs your ID [OK]
Common Mistakes:
  • Thinking set always creates new documents only
  • Confusing which method generates IDs automatically
  • Assuming add can update existing documents
2. Which of the following is the correct syntax to add a new document with an automatic ID in Firebase Firestore?
easy
A. db.collection('users').add({name: 'Alice'})
B. db.collection('users').set({name: 'Alice'})
C. db.collection('users').doc('user1').add({name: 'Alice'})
D. db.collection('users').doc().add({name: 'Alice'})

Solution

  1. Step 1: Identify method for automatic ID

    add creates a new document with an automatic ID inside a collection.
  2. Step 2: Check syntax correctness

    db.collection('users').add({name: 'Alice'}) is the correct syntax to add a new document with auto ID.
  3. Final Answer:

    db.collection('users').add({name: 'Alice'}) -> Option A
  4. Quick Check:

    Use add for auto ID = B [OK]
Hint: Use add() on collection to auto-generate document ID [OK]
Common Mistakes:
  • Using set() without specifying a document ID
  • Calling add() on a document reference instead of collection
  • Using doc() without an ID then calling add()
3. What will be the result of this code snippet?
db.collection('products').doc('p1').set({name: 'Book', price: 10});
db.collection('products').doc('p1').set({price: 12});
medium
A. The document 'p1' will have {name: 'Book', price: 12}
B. The document 'p1' will have {name: 'Book', price: 10, price: 12}
C. The document 'p1' will have only {price: 12}, name is removed
D. An error occurs because set is called twice

Solution

  1. Step 1: Analyze first set call

    The first set creates or overwrites document 'p1' with {name: 'Book', price: 10}.
  2. Step 2: Analyze second set call without merge

    The second set overwrites the entire document with {price: 12}, removing 'name' because merge option is not used.
  3. Final Answer:

    The document 'p1' will have only {price: 12}, name is removed -> Option C
  4. Quick Check:

    set without merge overwrites whole document = C [OK]
Hint: set without merge replaces whole document, removing old fields [OK]
Common Mistakes:
  • Assuming set merges fields by default
  • Expecting both name and price to remain
  • Thinking calling set twice causes error
4. Identify the error in this code snippet and how to fix it:
db.collection('orders').add({id: 'order1', total: 50});
db.collection('orders').doc('order1').set({total: 60});
medium
A. No error; both lines work fine together.
B. The first line creates a document with a random ID, so the second line updates a different document.
C. The second line should use add() instead of set().
D. The first line should specify the document ID using doc('order1').set() instead of add().

Solution

  1. Step 1: Understand add() behavior

    The first line adds a document with a random ID, ignoring the 'id' field inside data.
  2. Step 2: Understand doc('order1').set() behavior

    The second line sets data on a document with ID 'order1', which is different from the random ID created before.
  3. Step 3: Identify mismatch

    Because IDs differ, the second line updates a different document than the one created by add().
  4. Final Answer:

    The first line creates a document with a random ID, so the second line updates a different document. -> Option B
  5. Quick Check:

    add() random ID ≠ doc('order1') ID = A [OK]
Hint: add() ignores id field; doc(id).set() targets specific document [OK]
Common Mistakes:
  • Assuming add() uses the id field as document ID
  • Using set() on a doc without knowing if it exists
  • Expecting add() and set() to affect same document automatically
5. You want to update only the 'price' field of a document without removing other fields. Which Firebase method and option should you use?
hard
A. Use add() with the new price data.
B. Use set() without any options.
C. Use update() without any options.
D. Use set() with {merge: true} option.

Solution

  1. Step 1: Understand add() behavior

    add() creates a new document with a random ID; it cannot update existing documents.
  2. Step 2: Understand set() without merge

    set() without options overwrites the whole document, removing other fields.
  3. Step 3: Understand set() with merge option

    set() with {merge: true} updates only specified fields, keeping others intact.
  4. Step 4: Consider update()

    update() also updates fields but requires the document to exist; set() with merge works even if document is new.
  5. Final Answer:

    Use set() with {merge: true} option. -> Option D
  6. Quick Check:

    Partial update without overwrite = set() + merge true = D [OK]
Hint: Use set() with merge:true to update fields without deleting others [OK]
Common Mistakes:
  • Using add() to update existing documents
  • Using set() without merge and losing data
  • Confusing update() with set() merge behavior
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