U kunt alleen de $
. gebruiken positionele operator voor arrays met één niveau. In jouw geval heb je een geneste array (heros
is een array, en daarbinnen heeft elke held een spells
reeks).
Als u de indexen van de arrays kent, kunt u expliciete indexen gebruiken bij het uitvoeren van een update, zoals:
> db.test.update({"heros.nickname":"test", "heros.spells.spell_id":1}, {$set:{"heros.0.spells.1.level":3}});