write update firestore data collection database firebase google-cloud-firestore

database - update - Diferencia entre establecer con{merge: true} y actualizar



set document firestore (2)

La forma en que entendí la diferencia:

  • set sin fusionar sobrescribirá un documento o lo creará si aún no existe

  • set con combinación actualizará los campos en el documento o lo creará si no existe

  • update actualizará los campos pero fallará si el documento no existe

  • create creará el documento pero fallará si el documento ya existe

También hay una diferencia en el tipo de datos que proporciona para set y update .

Para el set , siempre debe proporcionar datos en forma de documento:

set( {a: {b: {c: true}}}, {merge: true} )

Con la update también puede usar rutas de campo para actualizar los valores anidados:

update({ ''a.b.c'': true })

En Cloud Firestore hay tres operaciones de escritura:

1) agregar

2) establecer

3) actualizar

En los documentos, dice que el uso de set(object, {merge: true}) fusionará el objeto con el existente.

Lo mismo sucede cuando usa la update(object) Entonces, ¿cuál es la diferencia si hay alguna? Parece extraño que Google duplique la lógica.


Otra diferencia (ampliar la respuesta de Scarygami) entre "establecer con combinación" y "actualizar" es cuando se trabaja con valores anidados.

Si tiene un documento estructurado así:

{ "friends": { "friend-uid-1": true, "friend-uid-2": true, } }

y desea agregar {"friend-uid-3" : true}

usando esto:

db.collection(''users'').doc(''random-id'').set({ "friends": { "friend-uid-3": true } },{merge:true})

dará como resultado estos datos:

{ "friends": { "friend-uid-1": true, "friend-uid-2": true, "friend-uid-3": true } }

sin embargo, update usando esto:

db.collection(''users'').doc(''random-id'').update({ "friends": { "friend-uid-3": true } })

dará como resultado estos datos:

`{ "friends": { "friend-uid-3": true } }`