2016-05-27 2 views
0

Я пытаюсь настроить таргетинг на объект в массиве, а затем вставить данные в тот же объект рядом с парными парами ключ/значение. Вот пример:MongoDB Вставить данные рядом с совпадающими значениями пары ключей

profile = [ 
    { 
     data: 'value', 
     array: [ 
     'one', 
     'three' 
     ] 
    } 
] 

var i = 0; 
var selector = 0; 
_.each(profile, function(elem) { 
    if (elem.data === 'value') { 
     selector = i; 
    } 
    i++ 
} 
profile[selector].array.push('two'); 

Это временное решение, чтобы добавить в массив объектов/массивов, но я пытаюсь найти способ сделать это с Метеор MongoDB. Есть ли селектор, который позволит мне настроить таргетинг на соответствующий массив (с соответствующей парой ключ/значение), а затем нацелить «массив» рядом с ним и нажать что-нибудь на него?

+0

Вы должны быть в состоянии сделать что-то похожее на это http://stackoverflow.com/a/27875706/4699406 –

ответ

1

Предполагая, что вы сохранили объект в MongoDB, который выглядит, как этот

{ 
    profile : [ 
     { 
      data: 'value', 
      array: [ 
       'one', 
       'three' 
      ] 
     } 
    ] 
} 

Я был в состоянии использовать это в MongoDB оболочки.

db.yourCollection.update(
    {"profile.data":"value"}, 
    {"$push": 
     { 
      "profile.$.array":"two" 
     } 
    } 
); 

Это находит запись, в которой данные свойства профиля равны «значению» и толкают «два» в массив свойств.

Ссылка: Mongodb $push in nested array

+0

Вы качаете, спасибо. – chriskgregory

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