2014-11-13 4 views
1

У меня есть коллекция под названием Ярусы с этой схемой:Заменить объект из массива внутри Метеор Collection

{ 
    "_id" : "u7fF2gjig3AXsnYBb", 
    "prizes" : [ 
    { 
     "_id" : "8h5b4QCd4fj7n7yek", 
     "pos" : 1, 
     "prize" : "prize 0" 
    }, 
    { 
     "_id" : "ZXK5is9ExpdAJJqJ5", 
     "pos" : 2, 
     "prize" : "prize 1" 
    }, 
    { 
     "_id" : "eWdbxQJ5oaM2xnX8v", 
     "pos" : 4, 
     "prize" : "prize 2" 
    } 
    ] 
} 

Как я могу заменить объект внутри массива призов поля поз?

Я пытаюсь с этим:

var pos = 4; 
var newPrize = {_id: Random.id(), pos: pos, prize: prize}; 

Tiers.update({_id: tierId}, { 
    $pull: {prizes: {pos: pos}}, 
    $push: {prizes: newPrize} 
}); 

Но я получаю это исключение: MongoError: Field name duplication not allowed with modifiers

ответ

2

Это может быть ваш ответ

db.test.update(
{ 
    _id : tierId, 
    'prizes.pos': 1 
}, 
{ 
    $set : {'prizes.$': newPrize} 
} 
) 
+0

Спасибо, это работает! – solarc

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