MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Schieben Sie das Element in das verschachtelte Array Mongoose nodejs

In Ihrer Abfrage verwenden Sie den Positionsoperator ($-Zeichen), um ein bestimmtes Video nach _id zu lokalisieren, und dann möchten Sie ein Element an Berichte senden.

Das Problem ist, dass MongoDB nicht weiß, welches Video Sie aktualisieren möchten, da der von Ihnen angegebene Pfad (seasons.episodes.videos.$.reports ) enthält zwei weitere Arrays (Staffeln und Episoden).

Wie in der Dokumentation angegeben, können Sie diesen Operator nicht mehr als einmal verwenden

Diese Einschränkung verkompliziert Ihre Situation. Sie können Ihre Berichte trotzdem aktualisieren, aber Sie müssen die genauen Indizes der äußeren Arrays kennen. Das folgende Update würde also funktionieren:

db.movies.update({'seasons.episodes.videos._id': data._id}, {$push: {'seasons.0.episodes.0.videos.$.reports': data.details}})

Alternativ können Sie einen größeren Teil dieses Dokuments in node.js aktualisieren oder Ihr Schemadesign unter Berücksichtigung der technologischen Einschränkungen überdenken.