我有以下代码对Mongo文档执行基本更新。问题是,在运行/stop/:id
路由后,startDate
字段将从嵌入文档中删除。在endDate
和started
字段更新后,如何确保它保留在那里?
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 :(得分:1)
使用$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);
});
});
答案 1 :(得分: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);
});
});