MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Empurre o elemento em nodejs de mangusto de matriz aninhada


Em sua consulta, você está usando o operador posicional ($ sign) para localizar um vídeo específico por _id e, em seguida, você deseja enviar um item para relatórios.

O problema é que o MongoDB não sabe qual vídeo você está tentando atualizar porque o caminho que você especificou (seasons.episodes.videos.$.reports ) contém duas outras matrizes (temporadas e episódios).

Como a documentação afirma que você não pode usar este operador mais de uma vez

Essa limitação complica sua situação. Você ainda pode atualizar seus relatórios, mas precisa conhecer os índices exatos das matrizes externas. Então a seguinte atualização estaria funcionando exemplo:
db.movies.update({'seasons.episodes.videos._id': data._id}, {$push: {'seasons.0.episodes.0.videos.$.reports': data.details}})

Alternativamente, você pode atualizar a maior parte deste documento em node.js ou repensar seu design de esquema tendo em mente as limitações da tecnologia.