W zapytaniu używasz operatora pozycyjnego (znak $), aby zlokalizować jeden konkretny film według _id, a następnie chcesz przekazać jeden element do raportów.
Problem polega na tym, że MongoDB nie wie, który film chcesz zaktualizować, ponieważ określona ścieżka (seasons.episodes.videos.$.reports ) zawiera dwie inne tablice (pory roku i odcinki).
Zgodnie z dokumentacją nie można użyć tego operatora więcej niż raz
To ograniczenie komplikuje twoją sytuację. Nadal możesz aktualizować swoje raporty, ale musisz znać dokładne indeksy tablic zewnętrznych. Tak więc następująca aktualizacja będzie działającym przykładem:
db.movies.update({'seasons.episodes.videos._id': data._id}, {$push: {'seasons.0.episodes.0.videos.$.reports': data.details}})
Alternatywnie możesz zaktualizować większą część tego dokumentu w node.js lub przemyśleć projekt schematu, pamiętając o ograniczeniach technologicznych.