Můžete použít Model.prototype.update
v mongoose k aktualizaci dílčího dokumentu timings
.
Existují však dva scénáře -
- Pokud chcete odeslat položky, aniž byste museli kontrolovat duplikáty, použijte
$push
operátor
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$push: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
- Pokud chcete odeslat pouze odlišné položky, použijte
$addToSet
operátor
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$addToSet: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
Poznámka:Vyžadovat mongoose
první
const mongoose = require('mongoose');
Opravte svůj kód podle níže uvedeného, také nemůžete získat přesné ID dílčího dokumentu, ale můžete získat aktualizovaný kořenový dokument -
const updatedUser = await User.findOneAndUpdate({
_id: mongoose.Types.ObjectId(req.body._id)
},
{
$addToSet: {
timings: {
startTime,
endTime,
elapsedTime
}
}
}, {
new: true
}).exec();