我正在尝试进行表面上看似基本的查询。但是,我似乎无法有效和优雅地做到这一点。也就是说,我有以下文件:
{
id:
runtime: {
start: Date
end: Date
total: number
}
events: [runtime1, runtime2, ...]
}
在某个API调用时,我想将runtime.end
设置为当前日期,然后将运行时对象中包含的内容推送到events数组中。
以下是我一直试图使用的代码:
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
对象外,上面的代码似乎什么都不做。
P.S。我在2010年至2012年期间发现了几个问题和答案,表明无法做到这一点。从那时起事情发生了变化?
答案 0 :(得分:-1)
检查您的MongoDB版本。您可能需要升级到最新版本。另外,单独尝试$push
(没有集合,就像在MongoDB文档示例中一样)。