Firestore update

set vs update

The way I understood the difference:
  • set without merge will overwrite a document or create it if it doesn't exist yet
  • set with merge will update fields in the document or create it if it doesn't exists
  • update will update fields but will fail if the document doesn't exist
  • create will create the document but fail if the document already exists
There's also a difference in the kind of data you provide to set and update.
For set you always have to provide document-shaped data:
set(
{a: {b: {c: true}}},
{merge: true}
)
With update you can also use field paths for updating nested values:
update({
'a.b.c': true
})
​