Sie können Model.prototype.update
verwenden
in Mungo, um das Unterdokument timings
zu aktualisieren .
Es gibt jedoch zwei Szenarien -
- Wenn Sie Einträge pushen möchten, ohne Duplikate prüfen zu müssen, verwenden Sie
$push
Betreiber
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$push: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
- Wenn Sie nur unterschiedliche Einträge pushen möchten, verwenden Sie
$addToSet
Betreiber
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$addToSet: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
Hinweis:Erfordert mongoose
zuerst
const mongoose = require('mongoose');
Korrigieren Sie Ihren Code wie folgt, Sie können auch nicht die genaue ID des Unterdokuments abrufen, aber Sie können das aktualisierte Stammdokument abrufen -
const updatedUser = await User.findOneAndUpdate({
_id: mongoose.Types.ObjectId(req.body._id)
},
{
$addToSet: {
timings: {
startTime,
endTime,
elapsedTime
}
}
}, {
new: true
}).exec();