sql >> Databasteknik >  >> NoSQL >> MongoDB

Skjut element in i kapslade array mongoose nodejs

I din fråga använder du positionsoperator ($-tecken) för att lokalisera en viss video med _id och sedan vill du skicka ett objekt till rapporter.

Problemet är att MongoDB inte vet vilken video du försöker uppdatera eftersom sökvägen du angav (seasons.episodes.videos.$.reports ) innehåller två andra arrayer (säsonger och avsnitt).

Som dokumentationen säger kan du inte använda den här operatören mer än en gång

Denna begränsning komplicerar din situation. Du kan fortfarande uppdatera dina rapporter men du behöver veta exakta index för yttre arrayer. Så följande uppdatering skulle vara ett fungerande exempel:

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

Alternativt kan du uppdatera en större del av det här dokumentet i node.js eller ompröva din schemadesign med tanke på tekniska begränsningar.




  1. Hur skapar man tailable-markör i MongoDB-skal?

  2. Finns det något sätt att flushall på ett kluster så att alla nycklar från master och slavar raderas från db

  3. Varning:Åtkomst till icke-existerande egenskap 'MongoError' för modulexporter inom cirkulärt beroende

  4. Android Studio:ansluter till MongoDB-servern med Mongo Java Driver