sql >> Databasteknik >  >> NoSQL >> MongoDB

Node.js - Mongoose - Uppdatera kapslad array med alla värden i req.body

Du skulle behöva använda $ positionsoperator i din $set . För att tilldela dessa egenskaper dynamiskt, baserat på vad som finns i din req.body , skulle du behöva bygga upp din $set programmatiskt.

Om du vill uppdatera namnet gör du följande:

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);
    }
 }
);

Ett sätt du kan programmera bygga upp $set med req.body är genom att göra följande:

let updateObj = {$set: {}};
for(var param in req.body) {
  updateObj.$set['competitors.$.'+param] = req.body[param];
 }

Se detta svara för mer information.



  1. Slå upp och sortera den utländska samlingen

  2. Problem med att starta MongoDB på Windows

  3. Minska utförandetiden för jobb med sidekiq

  4. Fulltextsökning i MongoDB ger inte det förväntade resultatet för @@@