Puede usar Model.prototype.update
en mongoose para actualizar el subdocumento timings
.
Sin embargo, existen dos escenarios -
- Si desea enviar entradas sin necesidad de verificar los duplicados, use
$push
operador
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$push: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
- Si desea enviar solo 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:Requerir mongoose
primero
const mongoose = require('mongoose');
Corrija su código a continuación, tampoco puede obtener la identificación exacta del subdocumento, pero puede obtener el documento raíz actualizado -
const updatedUser = await User.findOneAndUpdate({
_id: mongoose.Types.ObjectId(req.body._id)
},
{
$addToSet: {
timings: {
startTime,
endTime,
elapsedTime
}
}
}, {
new: true
}).exec();