2016-07-02 2 views
2

Как я могу обновить массив в файле mongoDB по индексу, который хранится в переменной?обновить массив в mongoDB документе переменным индексом

{ 
    _id: 'IDString', 
    field: [ bla, bla, old, bla ]; 
} 

let i = 2; 
Collection.update(
    { _id: 'IDString' }, 
    { $set: 
     { 'field.$.i': 'new' } 
    } 
); 

Так что результат должен быть:

{ 
    _id: 'IDString', 
    field: [ bla, bla, new, bla ]; 
} 

Мой код не будет работать, так как я хочу использовать переменную i.

+0

Возможный дубликат [Meteor MongoDB $ вкл с обновление] (http://stackoverflow.com/questions/33968094/meteor-mongodb-inc-with-update) – styvane

ответ

0

Использование синтаксиса dot notation создать документ обновления, так как это будет доступ к элементу массива с нулевой позиции индекса. Вам нужно будет объединить имя массива с точкой (.) И позицией индекса с нулевой позицией и заключить в кавычки.

Таким образом, в вашем примере, вам нужно будет настроить документ обновления динамически производить

var update = { "$set": { "field.2": "new" } } 

Следующий фрагмент кода показывает, что это:

var i = 2, 
    update = { "$set": {} }; 

update["$set"]["field."+i] = "new"; 
db.collection.update({ "_id": "IDString" }, update) 
0
Collection.update(
    { _id: 'IDString', field.2 : 1 }, 
    { $set: { 
     "field.$" : "new" } 
    } 
) 

Это должно работать, если нет - прокомментируйте ниже

Смежные вопросы