在MongoDB中设置另一个字段时参考文档字段值

时间:2016-09-05 22:27:59

标签: json node.js mongodb

我正在尝试进行表面上看似基本的查询。但是,我似乎无法有效和优雅地做到这一点。也就是说,我有以下文件:

{
  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年期间发现了几个问题和答案,表明无法做到这一点。从那时起事情发生了变化?

1 个答案:

答案 0 :(得分:-1)

检查您的MongoDB版本。您可能需要升级到最新版本。另外,单独尝试$push(没有集合,就像在MongoDB文档示例中一样)。