sql >> Database >  >> NoSQL >> MongoDB

Duw element in geneste array mongoose nodejs

In uw zoekopdracht gebruikt u de positionele operator ($ teken) om een ​​bepaalde video te lokaliseren met _id en dan wil je een item naar rapporten pushen.

Het probleem is dat MongoDB niet weet welke video je probeert te updaten, omdat het pad dat je hebt opgegeven (seasons.episodes.videos.$.reports ) bevat twee andere arrays (seizoenen en afleveringen).

Zoals in de documentatie staat, kun je deze operator niet meer dan één keer gebruiken

Deze beperking bemoeilijkt uw situatie. U kunt uw rapporten nog steeds bijwerken, maar u moet wel de exacte indexen van buitenste arrays kennen. Dus de volgende update zou een werkend voorbeeld zijn:

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

U kunt ook een groter deel van dit document bijwerken in node.js of uw schema-ontwerp heroverwegen, rekening houdend met technologische beperkingen.




  1. Mongoose breidt standaardvalidatie uit

  2. Mongoose/mongoDB-query voegt zich bij ... maar ik kom uit een sql-achtergrond

  3. Mongodb -- voeg bepaalde elementen toe of sluit ze uit met c# driver

  4. Kan mongodb niet brouwen op mac os 10.12