Você pode usar o
Model.prototype.update
em mangusto para atualizar o subdocumento timings
. No entanto, existem dois cenários -
- Se você quiser enviar entradas sem a necessidade de verificar duplicatas, use
$push
operador
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$push: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
- Se você quiser enviar apenas entradas distintas, use
$addToSet
operador
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$addToSet: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
Nota:Requer
mongoose
primeiro const mongoose = require('mongoose');
Corrija seu código para o abaixo, você também não pode obter o ID exato do subdocumento, mas pode obter o documento raiz atualizado -
const updatedUser = await User.findOneAndUpdate({
_id: mongoose.Types.ObjectId(req.body._id)
},
{
$addToSet: {
timings: {
startTime,
endTime,
elapsedTime
}
}
}, {
new: true
}).exec();