En Cloud Firestore hay tres operaciones de escritura:
1) agregar
2) establecer
3) actualización
En los documentos dice que el uso set(object, {merge: true})fusionará el objeto con uno existente.
Lo mismo sucede cuando usas update(object)
Entonces, ¿cuál es la diferencia, si la hay? Parece extraño que Google duplique la lógica.

createmétodo en la API?setopera sobre datos en forma de documento, dondeupdatetoma la ruta de campo y los pares de valores. Esto significa que puede realizar cambios en valores profundamente anidadosupdateque son más engorrososset. Por ejemplo:set({a: {b: {c: true}}}, {merge: true})vsupdate('a.b.c', true).Otra diferencia (extendiendo la respuesta de Scarygami) entre "establecer con fusión" y "actualizar", es cuando se trabaja con valores anidados.
si tiene un documento estructurado así:
y quiero agregar
{"friend-uid-3" : true}usando esto:
db.collection('users').doc('random-id').set({ "friends": { "friend-uid-3": true } },{merge:true})resultará en estos datos:
sin embargo
updateusando esto:db.collection('users').doc('random-id').update({ "friends": { "friend-uid-3": true } })resultará en estos datos:
fuente
{ merge: true }que la función de actualización.update, puede usar la notación de puntos . El comportamiento de sobrescritura deupdatees diferente si usa o no la notación de puntos.Por documentos: https://firebase.google.com/docs/firestore/manage-data/add-data#update_fields_in_nested_objects
La notación de puntos le permite actualizar un solo campo anidado sin sobrescribir otro campo anidado. Si actualiza un campo anidado sin notación de puntos, sobrescribirá todo el campo del mapa.
Como se indicó anteriormente, esto reemplaza toda la estructura de amigos.
Esto no lo hace.
fuente