MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wypchnij element do zagnieżdżonej tablicy mongoose nodejs

W zapytaniu używasz operatora pozycyjnego (znak $), aby zlokalizować jeden konkretny film według _id, a następnie chcesz przekazać jeden element do raportów.

Problem polega na tym, że MongoDB nie wie, który film chcesz zaktualizować, ponieważ określona ścieżka (seasons.episodes.videos.$.reports ) zawiera dwie inne tablice (pory roku i odcinki).

Zgodnie z dokumentacją nie można użyć tego operatora więcej niż raz

To ograniczenie komplikuje twoją sytuację. Nadal możesz aktualizować swoje raporty, ale musisz znać dokładne indeksy tablic zewnętrznych. Tak więc następująca aktualizacja będzie działającym przykładem:

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

Alternatywnie możesz zaktualizować większą część tego dokumentu w node.js lub przemyśleć projekt schematu, pamiętając o ograniczeniach technologicznych.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoError:sterownik jest niezgodny z tą wersją serwera

  2. Reguła MongoDB do usuwania wiersza, jeśli dana kolumna zawiera określoną wartość

  3. MongoDB $pow

  4. Dostęp do elementu w tablicy mongo w java

  5. Łatwy sposób na synchronizację danych między MongoDB i Apache Solr