Bạn chỉ có thể sử dụng $
toán tử vị trí cho mảng một cấp. Trong trường hợp của bạn, bạn có một mảng lồng nhau (heros
là một mảng và bên trong mỗi anh hùng có một spells
mảng).
Nếu bạn biết các chỉ mục của mảng, bạn có thể sử dụng các chỉ mục rõ ràng khi thực hiện cập nhật, như:
> db.test.update({"heros.nickname":"test", "heros.spells.spell_id":1}, {$set:{"heros.0.spells.1.level":3}});