sql >> Databáze >  >> NoSQL >> MongoDB

Push prvek do vnořeného pole mongoose nodejs

Ve svém dotazu používáte poziční operátor (znak $) pro lokalizaci jednoho konkrétního videa podle _id a poté chcete jednu položku vložit do přehledů.

Problém je v tom, že MongoDB neví, které video se snažíte aktualizovat, protože jste zadali cestu (seasons.episodes.videos.$.reports ) obsahuje dvě další pole (řady a epizody).

Jak uvádí dokumentace, nemůžete tento operátor použít více než jednou

Toto omezení vaši situaci komplikuje. Stále můžete aktualizovat své sestavy, ale musíte znát přesné indexy vnějších polí. Následující aktualizace by tedy fungovala jako příklad:

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

Případně můžete aktualizovat větší část tohoto dokumentu v node.js nebo přehodnotit návrh schématu s ohledem na technologická omezení.




  1. Potřebujete vypočítat rozdíl datetime pro pole datetime uložené ve formátu řetězce v MongoDB

  2. MongoDB – Jak mohu použít více skupin v agregačním kanálu?

  3. redis:reset počítadla každý den

  4. Jak rekurzivně procházet vnořeným dokumentem v MongoDB