Vous auriez besoin d'utiliser le $
opérateur positionnel dans votre $set
. Afin d'attribuer ces propriétés dynamiquement, en fonction de ce qui se trouve dans votre req.body
, vous auriez besoin de construire votre $set
par programmation.
Si vous souhaitez mettre à jour le nom, procédez comme suit :
Location.update(
{ 'competitors._id': req.params.competitorId },
{ $set: { 'competitors.$.name': req.body.name }},
(err, result) => {
if (err) {
res.status(500)
.json({ error: 'Unable to update competitor.', });
} else {
res.status(200)
.json(result);
}
}
);
Une façon de créer par programme le $set
en utilisant req.body
est en procédant comme suit :
let updateObj = {$set: {}};
for(var param in req.body) {
updateObj.$set['competitors.$.'+param] = req.body[param];
}
Voir ceci répondez pour plus de détails.