Soy bastante nuevo en MongoDB, quiero eliminar un objeto en particular de una matriz de objetos en un documento. Intenté mucho y encontré muchas preguntas en StackOverflow. Pero ninguna funcionó (tal vez es mi culpa)
el siguiente es un documento de una colección que coincide con el usuario con ID de usuario
61f15af01a3c53dfa87e38e6El documento
{ "_id": "61f15af01a3c53dfa87e38ed", "user": "61f15af01a3c53dfa87e38e6", "transactions": [ { "amount": 50, "category": "Bills", "type": "Expense", "_id": "61f15af01a3c53dfa87e38ee" }, { "amount": 100, "category": "Lottery", "type": "Income", "_id": "61f15af01a3c53dfa87e38ef" }, { "amount": 200, "category": "Salary", "type": "Income", "_id": "61f15af01a3c53dfa87e38f0" }, ] } Quiero eliminar la transacción con un Id de 61f15af01a3c53dfa87e38ef
Probé el siguiente (no sé si es correcto)
const allTransactions = await Transactions.findOne({ user: req.user._id }); const updatedTransactions = await allTransactions.update( { }, { $pull: { transactions: { id: req.params.id } } }, );¿Alguien puede detectar el error y cómo puedo lograrlo?
Gracias por adelantado :)
Puede hacerlo en una llamada a la base de datos usando la siguiente declaración:
await Transactions.update( { user: "61f15af01a3c53dfa87e38e6" }, { $pull: { "transactions": { _id: "61f15af01a3c53dfa87e38f0" } } } ) También asegúrese de que los tipos coincidan. Si _id es de tipo ObjectId en lugar de string , primero debe convertir req.params.id a ObjectId . Vea abajo:
await Transactions.update( { user: mongoose.Types.ObjectId(req.user._id) }, { $pull: { "transactions": { _id: mongoose.Types.ObjectId(req.params.id) } } } )