2016-08-19 6 views
0

Ich habe den folgenden Code, der grundlegende Updates für ein Mongo-Dokument ausführt. Das Problem ist, dass nach dem Ausführen der /stop/:id Route das Feld startDate aus dem eingebetteten Dokument gelöscht wird. Wie kann ich sicherstellen, dass es dort bleibt, nachdem die Felder endDate und started aktualisiert wurden?Aktualisieren Sie das eingebettete Mongo-Dokumentfeld, ohne andere Felder zu beeinträchtigen

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

Antwort

0

Es folgt ein Arbeits Code dafür:

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 dies mit $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

Das wird nicht funktionieren. $ addToSet scheint für das Hinzufügen von Elementen zu einem Array zu sein. In meinem Fall versuche ich Elemente in einem eingebetteten Dokument hinzuzufügen/zu ändern. – MadPhysicist

Verwandte Themen