Puoi utilizzare Model.prototype.update
in mangusta per aggiornare il sottodocumento timings
.
Tuttavia esistono due scenari -
- Se desideri inviare le voci senza dover controllare i duplicati, utilizza
$push
operatore
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$push: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
- Se desideri inviare solo voci distinte, utilizza
$addToSet
operatore
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$addToSet: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
Nota:richiede mongoose
prima
const mongoose = require('mongoose');
Correggi il tuo codice in base a quanto segue, inoltre non puoi ottenere l'ID esatto del documento secondario, ma puoi ottenere il documento radice aggiornato -
const updatedUser = await User.findOneAndUpdate({
_id: mongoose.Types.ObjectId(req.body._id)
},
{
$addToSet: {
timings: {
startTime,
endTime,
elapsedTime
}
}
}, {
new: true
}).exec();