使用MongoDB Mongoose驱动程序在对象数组中增加{key:value}

时间:2012-12-22 01:27:26

标签: mongodb mongoose increment

我有一个类似于此的文档:

{
    'user_id':'{1231mjnD-32JIjn-3213}',
    'name':'John',
    'campaigns':
        [
            {
                'campaign_id':3221,
                'start_date':'12-01-2012',
                'worker_id': '00000'
            },
            {
                'campaign_id':3222,
                'start_date':'13-01-2012',
                'worker_id': '00000'
            },
            ...
            etc
            ...
        ]
}

假设我想增加campaign_id数组中元素7的campaigns 使用dot和猫鼬驱动程序,我想我可以这样做:

camps.findOneAndUpdate({name: "John"}, {$inc: {"campaigns.7.campaign_id": 1}}, upsert: true, function(err, camp) {...etc...});

这不会增加campaign_id 关于增加这个的任何建议?

1 个答案:

答案 0 :(得分:8)

您的想法很正确,但您的upsert选项格式不正确。

试试这个:

camps.findOneAndUpdate(
    {name: "John"}, 
    {$inc: {"campaigns.7.campaign_id": 1}}, 
    {upsert: true},
    function(err, camp) {...etc...});