MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Inserisci l'elemento nell'array nidificato mongoose nodejs

Nella tua query stai utilizzando operatore posizionale (segno $) per localizzare un video particolare tramite _id e quindi vuoi inviare un elemento ai rapporti.

Il problema è che MongoDB non sa quale video stai cercando di aggiornare a causa del percorso che hai specificato (seasons.episodes.videos.$.reports ) contiene altri due array (stagioni ed episodi).

Come afferma la documentazione, non puoi utilizzare questo operatore più di una volta

Questa limitazione complica la tua situazione. Puoi comunque aggiornare i tuoi rapporti, ma devi conoscere gli indici esatti degli array esterni. Quindi il seguente aggiornamento sarebbe un esempio funzionante:

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

In alternativa puoi aggiornare la maggior parte di questo documento in node.js o ripensare la progettazione del tuo schema tenendo presente i limiti della tecnologia.