Можете да използвате Model.prototype.update
в mongoose за актуализиране на поддокумента timings
.
Съществуват обаче два сценария -
- Ако искате да изпращате записи, без да е необходимо да проверявате дубликати, използвайте
$push
оператор
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$push: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
- Ако искате да изпращате само отделни записи, използвайте
$addToSet
оператор
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$addToSet: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
Забележка:Изискване на mongoose
първо
const mongoose = require('mongoose');
Коригирайте кода си към по-долу, също така не можете да получите точния идентификатор на поддокумента, но можете да получите актуализирания основен документ -
const updatedUser = await User.findOneAndUpdate({
_id: mongoose.Types.ObjectId(req.body._id)
},
{
$addToSet: {
timings: {
startTime,
endTime,
elapsedTime
}
}
}, {
new: true
}).exec();