3
我有一个文件,看起来类似于:递增一个{键:值}对象数组与MongoDB的猫鼬驱动器内
{
'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
...
]
}
说我要递增元件7的campaign_id
的campaigns
阵列中。
使用dot与猫鼬司机,我想我能做到这一点:
camps.findOneAndUpdate({name: "John"}, {$inc: {"campaigns.7.campaign_id": 1}}, upsert: true, function(err, camp) {...etc...});
这不会增加campaign_id
。
关于增加这个的任何建议?
出于某种原因,我不明白,如果我说:“运动”'变种更新= +位置+“.campaign_id”'然后'$ inc:{update:1}'不起作用(其中位置是一个整数)。但是,如果我按照上面的方式拼出,那么就可以正常工作:'$ inc:{“campaigns.7.campaign_id”:1}'。你知道为什么吗? – user1460015
因为您不能在JavaScript直接对象中将变量用作键名。所以你必须以编程方式构建你的更新对象。 'var update = {$ inc:{}};更新。$ INC [ '活动。' +位置+“.campaign_id”] = 1;' – JohnnyHK
啊......有趣。谢谢! – user1460015