クエリでは、位置演算子を使用しています ($記号)1つの特定のビデオを_idでローカライズし、1つのアイテムをレポートにプッシュします。
問題は、指定したパス(seasons.episodes.videos。$。reports)が原因で、MongoDBが更新しようとしているビデオを認識しないことです。 )他の2つの配列(シーズンとエピソード)が含まれています。
ドキュメントに記載されているように、この演算子は2回以上使用できません
この制限により、状況が複雑になります。レポートは引き続き更新できますが、外部配列の正確なインデックスを知る必要があります。したがって、次の更新が実用的な例になります:
db.movies.update({'seasons.episodes.videos._id': data._id}, {$push: {'seasons.0.episodes.0.videos.$.reports': data.details}})
または、node.jsでこのドキュメントの大部分を更新するか、テクノロジーの制限を念頭に置いてスキーマ設計を再考することができます。