Du kan bara använda $
positionsoperator för ennivåmatriser. I ditt fall har du en kapslad array (heros
är en array, och inom den har varje hjälte en spells
array).
Om du känner till indexen för arrayerna kan du använda explicita index när du gör en uppdatering, som:
> db.test.update({"heros.nickname":"test", "heros.spells.spell_id":1}, {$set:{"heros.0.spells.1.level":3}});