Updating specific fields in Firebase - Time & Space Complexity
When updating specific fields in a Firebase document, it's important to know how the time to complete the update changes as the number of fields or documents grows.
We want to understand how the update operation scales with input size.
Analyze the time complexity of updating specific fields in a document.
const docRef = firestore.collection('users').doc('user123');
await docRef.update({
age: 30,
city: 'New York'
});
This code updates only the age and city fields of a single user document.
Identify the API calls, resource provisioning, data transfers that repeat.
- Primary operation: One update API call to modify specific fields in a document.
- How many times: Exactly once per update request, regardless of how many fields are updated.
Updating more fields in the same document still uses a single API call, so the number of calls stays the same.
| Input Size (number of fields) | Approx. API Calls/Operations |
|---|---|
| 2 | 1 |
| 10 | 1 |
| 100 | 1 |
Pattern observation: The number of API calls does not increase with the number of fields updated in a single document.
Time Complexity: O(1)
This means updating specific fields in one document takes the same amount of time no matter how many fields you change.
[X] Wrong: "Updating more fields means more API calls and longer time."
[OK] Correct: Because Firebase sends one update request per document, updating multiple fields in that document is done in a single call.
Understanding how updates scale helps you design efficient data operations and shows you know how cloud services handle requests behind the scenes.
"What if we updated multiple documents instead of one? How would the time complexity change?"
Practice
update() method do in Firebase Firestore?Solution
Step 1: Understand the purpose of update()
Theupdate()method modifies only the fields you specify in an existing document.Step 2: Compare with other methods
Unlikeset(),update()does not overwrite the entire document, preserving other fields.Final Answer:
It changes only specific fields in a document without overwriting the whole document. -> Option CQuick Check:
update() modifies specific fields only [OK]
- Thinking update() deletes documents
- Confusing update() with set() creating collections
- Believing update() reads data
age to 30 in a Firestore document reference docRef?Solution
Step 1: Identify the correct method for updating fields
Theupdate()method is used to change specific fields without overwriting the document.Step 2: Check syntax correctness
The correct syntax isdocRef.update({ age: 30 });where the fields to update are passed as an object.Final Answer:
docRef.update({ age: 30 }); -> Option AQuick Check:
update() uses object with fields [OK]
- Using set() which overwrites the document
- Using invalid syntax like update(age = 30)
- Using non-existent method modify()
const docRef = firestore.collection('users').doc('user123');
docRef.update({ 'profile.name': 'Alice', 'profile.age': 28 });What will happen if the document
user123 does not exist?Solution
Step 1: Understand update() behavior on non-existing documents
Theupdate()method requires the document to exist; otherwise, it throws an error.Step 2: Analyze the code context
Sinceuser123does not exist, the update call will fail with an error.Final Answer:
The update will fail with an error because the document does not exist. -> Option AQuick Check:
update() fails if document missing [OK]
- Assuming update() creates documents
- Thinking update() silently succeeds
- Confusing update() with set() with merge
docRef.update({ 'address.city': 'New York' });But you get an error. What is the most likely cause?
Solution
Step 1: Recall update() requirements
update() requires the document to exist; otherwise, it throws an error.Step 2: Check dot notation support
Dot notation is supported for nested fields in update(), so that is not the cause.Step 3: Confirm field name validity
Field names with dot notation are valid in Firestore for nested updates.Final Answer:
The document does not exist, so update() fails. -> Option BQuick Check:
update() fails if document missing, dot notation allowed [OK]
- Believing dot notation is unsupported
- Thinking set() is required for nested fields
- Assuming field names with dots are invalid
settings.notifications.email to false in a Firestore document. The document may or may not exist. Which code snippet correctly updates or creates the document without overwriting other fields?Solution
Step 1: Understand update() vs set() with merge
update() fails if the document does not exist. set() with{ merge: true }creates or updates without overwriting.Step 2: Analyze each option
docRef.update({ 'settings.notifications.email': false }); fails if document missing. docRef.set({ 'settings.notifications.email': false }); overwrites entire document. docRef.set({ 'settings.notifications.email': false }, { merge: true }); correctly merges nested field. docRef.update({ settings: { notifications: { email: false } } }); incorrectly uses update() with nested object, which overwrites nested fields.Final Answer:
docRef.set({ 'settings.notifications.email': false }, { merge: true }); -> Option DQuick Check:
Use set() with merge:true to update or create safely [OK]
- Using update() when document may not exist
- Using set() without merge, overwriting data
- Passing nested objects to update() causing overwrite
Ready to prove it?
Pass the test and this pattern moves unknown
