Dans votre requête, vous utilisez un opérateur positionnel (signe $) pour localiser une vidéo particulière par _id, puis vous souhaitez envoyer un élément aux rapports.
Le problème est que MongoDB ne sait pas quelle vidéo vous essayez de mettre à jour car le chemin que vous avez spécifié (seasons.episodes.videos.$.reports ) contient deux autres tableaux (saisons et épisodes).
Comme l'indique la documentation, vous ne pouvez pas utiliser cet opérateur plus d'une fois
Cette limitation complique votre situation. Vous pouvez toujours mettre à jour vos rapports, mais vous devez connaître les index exacts des tableaux externes. Donc, la mise à jour suivante serait un exemple de travail :
db.movies.update({'seasons.episodes.videos._id': data._id}, {$push: {'seasons.0.episodes.0.videos.$.reports': data.details}})
Vous pouvez également mettre à jour une plus grande partie de ce document dans node.js ou repenser la conception de votre schéma en gardant à l'esprit les limitations technologiques.