Możesz użyć tylko $
operator pozycyjny dla tablic jednopoziomowych. W twoim przypadku masz zagnieżdżoną tablicę (heros
jest tablicą, w której każdy bohater ma spells
tablica).
Jeśli znasz indeksy tablic, możesz użyć wyraźnych indeksów podczas aktualizacji, na przykład:
> db.test.update({"heros.nickname":"test", "heros.spells.spell_id":1}, {$set:{"heros.0.spells.1.level":3}});