sql >> Base de Datos >  >> NoSQL >> MongoDB

Empuje el elemento en la matriz anidada mongoose nodejs

En su consulta está utilizando operador posicional ($ sign) para localizar un video en particular por _id y luego desea enviar un elemento a los informes.

El problema es que MongoDB no sabe qué video está tratando de actualizar debido a la ruta que especificó (temporadas.episodes.videos.$.informes ) contiene otras dos matrices (temporadas y episodios).

Como dice la documentación, no puede usar este operador más de una vez

Esta limitación complica su situación. Aún puede actualizar sus informes, pero necesita conocer los índices exactos de las matrices externas. Entonces, la siguiente actualización sería un ejemplo de trabajo:

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

Alternativamente, puede actualizar una mayor parte de este documento en node.js o repensar el diseño de su esquema teniendo en cuenta las limitaciones tecnológicas.