Du kan använda Model.prototype.update
i mongoose för att uppdatera underdokumentet timings
.
Det finns dock två scenarier -
- Om du vill pusha poster utan att behöva kontrollera dubbletter, använd
$push
operatör
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$push: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
- Om du bara vill skicka distinkta poster använder du
$addToSet
operatör
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$addToSet: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
Obs:Kräv mongoose
först
const mongoose = require('mongoose');
Rätta din kod till nedan, du kan inte heller få det exakta underdokumentets ID, men du kan få det uppdaterade rotdokumentet -
const updatedUser = await User.findOneAndUpdate({
_id: mongoose.Types.ObjectId(req.body._id)
},
{
$addToSet: {
timings: {
startTime,
endTime,
elapsedTime
}
}
}, {
new: true
}).exec();