MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Pousser l'élément dans le tableau imbriqué mongoose nodejs

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.