He buscado en internet para esto pero no he encontrado una solución.
Problema: quiero eliminar el carácter (un objeto completo en la matriz de caracteres).
Criterios: _id="612d0ba09403d0224b55cb6d"
e id=0
Solo puedo ubicar la cuenta (objeto completo presentado), pero no sé cómo ubicar el carácter específico en la cuenta.
User.findOneAndDelete()({ _id: "612d0ba09403d0224b55cb6d" }, (err, data) => { if (err) console.error('Removing character error: ', err) else console.log('foundChar', data) })
{ "_id": "612d0ba09403d0224b55cb6d", "nickname":"tester", "email":"test@test.com", "password":"tester", "characters":[ { "id": 0, "name":"hdfghgfd", "skin":"thor", "exp": 0, "account_id":"612d0ba09403d0224b55cb6d" }, { "id": 1, "name":"bdfsgfds", "skin":"starlord", "exp": 0, "account_id":"612d0ba09403d0224b55cb6d" } ] }
Para eliminar un elemento de una matriz, debe usar update
y$pull
De los documentos:
El operador
$pull
elimina de una matriz existente todas las instancias de un valor o valores que coincidan con una condición específica.
Entonces necesitas esta consulta:
yourCollection.updateOne({ _id: "612d0ba09403d0224b55cb6d" }, { "$pull": { "characters": { "id": 0 } } })
Ejemplo aquí