在mongodb更新中使用一个variables

使用meteor,我试图执行如下更新:

Items.update(Session.get('selectedItem'), {'$set': {'directions.0.name': area.value}}) 

但我正在努力如何dynamic地设置方向的数组索引,如下所示:

 var index = //a value determined dynamically Items.update(Session.get('selectedItem'), {'$set': {'directions[index]name': area.value}}) 

这不起作用,因为[index]被包装在一个string中。 我也试graphics成一个自定义string,如下所示:

 var string = 'directions.'+itemIndex+'.name' Items.update(Session.get('selectedItem'), {'$set': {string: area.value}}) 

但是这不起作用。 任何想法如何做到这一点?

您需要以编程方式构build您的$set对象:

 var setModifier = { $set: {} }; setModifier.$set['directions.' + index + '.name'] = area.value; Items.update(Session.get('selectedItem'), setModifier); 

更新

如果您的JavaScript环境支持计算属性名称 (例如,node.js 4+),则可以一步完成此操作:

 Items.update(Session.get('selectedItem'), { $set: { ['directions.' + index + '.name']: area.value }});