2016-08-19 1 views
0

J'ai le code suivant qui effectue des mises à jour de base sur un document Mongo. Le problème est qu'après avoir exécuté la route /stop/:id, le champ startDate est supprimé du document incorporé. Comment puis-je m'assurer qu'il reste là après que les champs endDate et started ont été mis à jour?Mettre à jour le champ de document Mongo incorporé sans affecter d'autres champs

router.get('/start/:id', function(req,res){ 
    var collection = db.get('Activity'); 
    collection.update({ 
     _id: req.params.id 
    }, 
    { 
     $set: { 
      "runtime": { 
        started: true, 
        startDate: new Date(), 
        endDate: null 
      } 
     } 
    }, function(err, activity){ 
     if (err) throw err; 
     res.json(activity); 
    }); 
}); 

router.get('/stop/:id', function(req,res){ 
    var collection = db.get('Activity'); 
    collection.update({ 
     _id: req.params.id 
    }, 
    { 
     $set: { 
      "runtime.started": false, 
      "runtime.endDate": new Date()  
     } 
    }, function(err, activity){ 
     if (err) throw err; 
     res.json(activity); 
    }); 
}); 

Répondre

0

Voici un code de travail pour cela:

router.get('/stop/:id', function(req,res){ 
    var collection = db.get('Activity'); 

    collection.update({ 
     _id: req.params.id 
    }, 
    { 
     $set: { 
      "runtime.started": false, 
      "runtime.endDate": new Date() 
     } 
    }, 
    function(err, activity){ 
     if (err) throw err; 
     res.json(activity); 
    }); 
}); 
1

Trh ce en utilisant $addToSet

router.get('/stop/:id', function(req,res){ 
    var collection = db.get('Activity'); 
    collection.update({ 
     _id: req.params.id 
    }, 
    { 
     $addToSet: { 
      "runtime.started": false, 
      "runtime.endDate": new Date()  
     } 
    }, function(err, activity){ 
     if (err) throw err; 
     res.json(activity); 
    }); 
}); 
+0

Cela ne va pas fonctionner. $ addToSet semble être pour ajouter des éléments à un tableau. Dans mon cas, j'essaye d'ajouter/changer des éléments sur un document incorporé. – MadPhysicist