Actualiza la llave de Mongo anidada en un arreglo si existe.
Tengo una estructura similar. En cada nivel hay una clave "changed"
y dentro de ella puede existir o no un array cuyo valor anidado es recursivo.
Tengo que actualizar todas las claves cambiadas a true
.
He intentado esto
db.getCollection.update(
{ "id": 1 },
{ "$set": { "changed": true,
"level_2.$[].changed": true,
"level_2.$[].level_3.$[].changed": true,
"level_2.$[].level_3.$[].level_4.$[].changed": true} }
)
pero arroja El camino 'level_2.0.level_3' debe existir en el documento para aplicar actualizaciones de matrices.
davy.ai
¿Hay alguna manera de actualizar todas las claves cambiadas a
true
sin comprobar si el array anidado existe o no?Sí, hay una manera de actualizar todas las claves cambiadas a
true
sin comprobar si el array anidado existe o no. Puede utilizar el operador$set
con el operador$exists
para actualizar la clavecambiada
atrue
independientemente de si el array anidado existe o no. La siguiente consulta debería funcionar: