【发布时间】:2016-09-06 09:56:00
【问题描述】:
我正在尝试做一个表面上看起来很基本的查询。但是,我似乎无法高效而优雅地做到这一点。即,我有以下文件:
{
id:
runtime: {
start: Date
end: Date
total: number
}
events: [runtime1, runtime2, ...]
}
在某个 API 调用后,我想将 runtime.end 设置为当前日期,然后将运行时对象中包含的内容推送到事件数组中。
这是我一直在尝试使用的代码:
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()
},
$push: {events: {
startDate: new Date,
endDate: new Date
}
}
},
function(err, activity){
if (err) throw err;
res.json(activity);
});
});
知道如何做到这一点吗?上面的代码似乎什么也没做,除了编辑runtime 对象。
附:我在 2010 - 2012 年发现了几个问题和答案,表明这无法完成。从那以后情况发生了变化吗?
【问题讨论】:
-
您的代码是否给出了错误或与预期不同的结果,如果是,请详细说明两者。
-
上面的代码似乎什么也没做,除了编辑
runtime对象。我在控制台中没有看到任何错误。 -
代码中没有实际的运行时对象。
-
$set: { "runtime.started": false, "runtime.endDate": new Date() }, -
@JohnnyHK 谢谢。有没有你可以建议的解决方法?