Bird
Raised Fist0
Firebasecloud~10 mins

Setting with merge option in Firebase - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Setting with merge option
Start: Document exists or not
↓
Call set() with merge option
↓
Check merge flag
↓
Save changes
↓
End
This flow shows how using the merge option in set() updates only specified fields without deleting others, unlike a full overwrite.
Execution Sample
Firebase
docRef.set({ age: 30 }, { merge: true });
Updates only the 'age' field in the document, keeping other fields intact.
Process Table
StepDocument State BeforeActionMerge OptionDocument State After
1{}Call set({ age: 30 })true{ age: 30 }
2{ name: 'Alice', city: 'NY' }Call set({ age: 30 })true{ name: 'Alice', city: 'NY', age: 30 }
3{ name: 'Alice', city: 'NY' }Call set({ age: 30 })false{ age: 30 }
4{ age: 30 }Call set({ city: 'LA' })true{ age: 30, city: 'LA' }
5{ age: 30, city: 'LA' }Call set({ city: 'LA' })false{ city: 'LA' }
6{ city: 'LA' }Call set({ })true{ city: 'LA' }
7{ city: 'LA' }Call set({ })false{}
💡 Execution ends after all set calls demonstrate merge vs overwrite effects.
Status Tracker
Document StateStartAfter Step 1After Step 2After Step 3After Step 4After Step 5After Step 6After Step 7
doc{}{ age: 30 }{ name: 'Alice', city: 'NY', age: 30 }{ age: 30 }{ age: 30, city: 'LA' }{ city: 'LA' }{ city: 'LA' }{}
Key Moments - 2 Insights
Why does the document keep other fields when merge is true but loses them when merge is false?
When merge is true (see steps 2 and 4), only specified fields are updated or added, preserving others. When false (steps 3 and 5), the entire document is replaced with new data, removing unspecified fields.
What happens if you call set() with an empty object and merge true or false?
With merge true (step 6), the document stays unchanged because no fields are added or removed. With merge false (step 7), the document is overwritten and becomes empty.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the document state after step 2?
A{ name: 'Alice', city: 'NY', age: 30 }
B{ name: 'Alice', city: 'NY' }
C{ age: 30 }
D{}
💡 Hint
Check the 'Document State After' column for step 2 in the execution_table.
At which step does the document lose all fields and become empty?
AStep 5
BStep 6
CStep 7
DStep 3
💡 Hint
Look for '{}' in the 'Document State After' column in the execution_table.
If merge option was false at step 4, what would the document state be after that step?
A{ age: 30, city: 'LA' }
B{ city: 'LA' }
C{ age: 30 }
D{}
💡 Hint
Compare step 4 with merge true vs false in the execution_table.
Concept Snapshot
set(data, {merge: true}) updates only specified fields.
Without merge, set() overwrites entire document.
Merge preserves existing fields not in new data.
Empty data with merge true keeps document unchanged.
Empty data with merge false clears document.
Full Transcript
This visual execution shows how Firebase's set() method behaves with the merge option. When merge is true, only the fields provided are updated or added, and existing fields remain untouched. When merge is false or omitted, the entire document is replaced by the new data, removing any fields not included. For example, setting { age: 30 } with merge true adds or updates the age field but keeps other fields like name or city. Setting with merge false replaces the whole document with only the age field. Calling set() with an empty object and merge true leaves the document unchanged, but with merge false clears it. This helps understand how to safely update parts of a document without losing data.

Practice

(1/5)
1. What does the merge: true option do when updating a Firestore document?
easy
A. It deletes the entire document before updating.
B. It updates only the specified fields without deleting others.
C. It creates a new document with the same ID.
D. It prevents any updates to the document.

Solution

  1. Step 1: Understand Firestore update behavior

    By default, setting data replaces the whole document, removing unspecified fields.
  2. Step 2: Role of merge: true

    Using merge: true updates only the fields you specify, keeping other fields intact.
  3. Final Answer:

    It updates only the specified fields without deleting others. -> Option B
  4. Quick Check:

    Merge option = partial update [OK]
Hint: Merge means update fields, keep others safe [OK]
Common Mistakes:
  • Thinking merge deletes the whole document
  • Confusing merge with creating new documents
  • Assuming merge prevents updates
2. Which of the following is the correct syntax to update a Firestore document with merge option in JavaScript?
easy
A. docRef.set({name: 'Alice'}, merge=true);
B. docRef.update({name: 'Alice'}, {merge: true});
C. docRef.set({name: 'Alice'}, {merge: true});
D. docRef.update({name: 'Alice'}, merge=true);

Solution

  1. Step 1: Identify correct method and options

    Firestore's set method accepts an options object as second parameter for merge.
  2. Step 2: Check syntax correctness

    The correct syntax is set(data, {merge: true}). The update method does not accept merge option.
  3. Final Answer:

    docRef.set({name: 'Alice'}, {merge: true}); -> Option C
  4. Quick Check:

    set with {merge: true} is correct syntax [OK]
Hint: Use set() with {merge: true}, not update() [OK]
Common Mistakes:
  • Using update() with merge option
  • Passing merge as a separate argument without braces
  • Using merge=true instead of {merge: true}
3. Given the Firestore document data: {name: 'Bob', age: 30, city: 'NY'}, what will be the document content after running docRef.set({age: 31}, {merge: true});?
medium
A. {name: 'Bob', age: 30, city: 'NY', age: 31}
B. {age: 31}
C. {name: 'Bob', city: 'NY'}
D. {name: 'Bob', age: 31, city: 'NY'}

Solution

  1. Step 1: Understand existing document

    The document has fields: name='Bob', age=30, city='NY'.
  2. Step 2: Effect of set with merge

    Using set with {merge: true} updates only the specified field age to 31, keeping others unchanged.
  3. Final Answer:

    {name: 'Bob', age: 31, city: 'NY'} -> Option D
  4. Quick Check:

    Merge updates age, keeps name and city [OK]
Hint: Merge updates given fields, keeps rest intact [OK]
Common Mistakes:
  • Thinking merge replaces whole document
  • Expecting duplicate keys in document
  • Assuming fields not mentioned get deleted
4. You try to update a Firestore document with docRef.set({score: 100}, merge=true); but it throws an error. What is the problem?
medium
A. The merge option must be passed as an object: {merge: true}.
B. The set method does not support merge option.
C. The score field cannot be updated.
D. You must use update() instead of set() for merge.

Solution

  1. Step 1: Check merge option syntax

    The merge option must be passed as an object: {merge: true}, not as merge=true.
  2. Step 2: Confirm set supports merge

    The set method supports merge option correctly when passed as an object.
  3. Final Answer:

    The merge option must be passed as an object: {merge: true}. -> Option A
  4. Quick Check:

    Merge option syntax requires braces [OK]
Hint: Pass merge as {merge: true}, not merge=true [OK]
Common Mistakes:
  • Passing merge as a boolean without braces
  • Using update() with merge option
  • Assuming merge disables updates
5. You have a Firestore document {name: 'Eve', stats: {wins: 5, losses: 2}}. You want to update only wins to 6 without removing losses. Which code correctly updates the document using merge?
hard
A. docRef.set({stats: {wins: 6}}, {mergeFields: ['stats.wins']});
B. docRef.set({stats: {wins: 6, losses: 2}}, {merge: true});
C. docRef.set({stats: {wins: 6}}, {merge: true});
D. docRef.update({stats: {wins: 6}});

Solution

  1. Step 1: Understand nested field update with merge

    Using {merge: true} with nested objects replaces the whole nested object, removing unspecified keys.
  2. Step 2: Use mergeFields to update nested field only

    Passing {mergeFields: ['stats.wins']} updates only the nested wins field without deleting losses.
  3. Final Answer:

    docRef.set({stats: {wins: 6}}, {mergeFields: ['stats.wins']}); -> Option A
  4. Quick Check:

    mergeFields updates nested fields precisely [OK]
Hint: Use mergeFields to update nested fields safely [OK]
Common Mistakes:
  • Using merge true replaces whole nested object
  • Not specifying mergeFields for nested updates
  • Assuming update() always merges nested fields
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