MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Избутване на елемент във вложен масив mongoose nodejs

Във вашата заявка използвате позиционен оператор (знак $), за да локализирате конкретен видеоклип по _id и след това искате да изпратите един елемент към отчетите.

Проблемът е, че MongoDB не знае кой видеоклип се опитвате да актуализирате, тъй като пътят, който сте посочили (seasons.episodes.videos.$.reports ) съдържа два други масива (сезони и епизоди).

Както се посочва в документацията, не можете да използвате този оператор повече от веднъж

Това ограничение усложнява ситуацията ви. Все още можете да актуализирате отчетите си, но трябва да знаете точните индекси на външните масиви. Следната актуализация би била работещ пример:

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

Като алтернатива можете да актуализирате по-голяма част от този документ в node.js или да преосмислите дизайна на вашата схема, като имате предвид технологичните ограничения.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Поддокументите на mongodb еквивалентни ли са на подколекциите на Firestore?

  2. Как да създадете ограничена колекция с Spring Data? - MongoDB

  3. Карта/намаляване и сортиране на вложен документ

  4. Spring Data MongoRepository Запазване на обекти с различен брой полета

  5. Object.keys, как да получите списък с ключове в mongodb