2016-08-19 53 views
0

我有以下代码在Mongo文档上执行基本更新。问题是,在我运行/stop/:id路由后,startDate字段被从嵌入式文档中删除。如何在endDatestarted字段更新后确保它保持在那里?在不影响其他字段的情况下更新嵌入式Mongo文档字段

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

回答

0

以下是这一个工作代码:

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此使用$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

这是行不通的。 $ addToSet似乎用于向数组添加元素。就我而言,我正试图在嵌入式文档上添加/更改元素。 – MadPhysicist

相关问题