{ id: 1, name: "venkat", description: "Description", address: "chennai", pinCode: "600100", authenticationCode: "123", authenticated: false, deleted: false, Location: [ { name: "foo", description: "LocationDecription", parent: "parent", UserAccess: [ { loginName: "paklon", role: "role" } ] } ] } Necesito actualizar el role:"admin" donde las condiciones coinciden como id: 1 , el nombre de la matriz de la Location name: "foo" y la matriz anidada de la Location de "UserAccess.loginName": "paklon" y luego actualizar la función.
De acuerdo con la descripción mencionada anteriormente, como solución, intente ejecutar la siguiente operación de actualización en el shell de MongoDB
db.collection.update({ "id": 1, "Location": { $elemMatch: { "name": "foo", "UserAccess": { $elemMatch: { "loginName": "paklon" } } } } }, { $set: { "Location.$.UserAccess.0.role": "admin" } })La siguiente consulta debería funcionar:
db.collection.update( {"id": 1, "Location.name": "foo", "Location.UserAccess.loginName": "paklon"}, {$set: {"Location.0.UserAccess.0.role": "admin"}} )Para actualizar un elemento en particular en una matriz, debe usar el operador posicional "$" que en realidad es un marcador de posición para el primer elemento. Por lo tanto, podría reemplazarse con "0" y como permitía usar el "$" solo una vez en la consulta, deberá usar "0" al final de la consulta en cualquier caso.
También eche un vistazo a la documentación de mongodb correspondiente