Estoy tratando de eliminar un objeto de una matriz. Si el valor del objeto coincide, ese objeto se eliminará de la base de datos. Aquí está mi ejemplo de base de datos:
[{ _id: "621773f39ec6fe3a3728d686", label: "size", slug: "size", vendor: "admin", options: [ { label: "M", value: "M" }, { label: "XXL", value: "XXL" }, { label: "XL", value: "XL" }, { label: "S", value: "S" } ] } ]Este es mi código:
// DELETE FILED FROM ATTRIBUTE app.put('/dashboard/attribute/fieldDelete/:id', async (req, res) => { const id = req.params.id const { value } = req.body unityMartAttributes.updateOne({ value: value }, { $pull: { options: { _id: objectId(id) } } }) })Salida esperada: valor: "M" coincidió, es por eso que se eliminó ese objeto
[{ _id: "621773f39ec6fe3a3728d686", label: "size", slug: "size", vendor: "admin", options: [ { label: "XXL", value: "XXL" }, { label: "XL", value: "XL" }, { label: "S", value: "S" } ] } ]Puedes hacerlo así:
app.put('/dashboard/attribute/fieldDelete/:id', async (req, res) => { const id = req.params.id const { value } = req.body await unityMartAttributes.updateOne({ "_id": id }, { "$pull": { "options": { "value": value } } }); }