Подтвердить что ты не робот

Использование переменной в обновлении mongodb

Используя Meteor, я пытаюсь выполнить обновление, подобное следующему:

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

Но я изо всех сил пытаюсь установить динамический индекс массива динамически, с чем-то вроде этого:

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

Это не работает, потому что [index] заключен в строку. Я также попытался создать пользовательскую строку, например:

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

Но это не работает. Любая идея о том, как это сделать?

4b9b3361

Ответ 1

Вам необходимо программно создать объект $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
}});