Entonces, estoy tratando de codificar un bot en discord.js donde básicamente tienes elementos en un inventario y cuando uso un elemento, su durabilidad disminuye. Estoy usando MongoDB Atlas para almacenar todos los datos. La estructura del inventario es:
user: { id: 'user-id', name: 'user-name', inventory: [ { name: 'item', durability: 5 , { name: 'another-item', durability: 20 } ] }Así que solo quería encontrar una manera de disminuir básicamente la durabilidad del artículo sin actualizar ningún otro artículo en la matriz de inventario, pero no pude encontrar la manera de hacerlo.
Puede usar arrayFilters para actualizar solo el valor que desee.
También puede usar $inc para incrementar el valor (en este caso, incrementar en -1, es decir, disminuir)
db.collection.update({ "id": "user-id" }, { "$inc": { "inventory.$[element].durability": -1 } }, { "arrayFilters": [ { "element.name": "item" //here use the name of the object you want to update } ] })Ejemplo aquí