Anda hanya dapat menggunakan $
operator posisi untuk array tingkat tunggal. Dalam kasus Anda, Anda memiliki array bersarang (heros
adalah larik, dan di dalamnya setiap pahlawan memiliki spells
susunan).
Jika Anda mengetahui indeks array, Anda dapat menggunakan indeks eksplisit saat melakukan pembaruan, seperti:
> db.test.update({"heros.nickname":"test", "heros.spells.spell_id":1}, {$set:{"heros.0.spells.1.level":3}});